import { getFontFaceCss, normalizeFontFamily } from "@/utils/fonts"; export const exportResumeToBrowserPrint = async ( resumeContent: HTMLElement, pagePadding: number, fontFamily?: string ) => { const printFrame = document.createElement("iframe"); printFrame.style.position = "absolute"; printFrame.style.width = "1px"; printFrame.style.height = "1px"; printFrame.style.left = "-9999px"; printFrame.style.top = "0"; printFrame.style.visibility = "hidden"; printFrame.style.zIndex = "-1"; document.body.appendChild(printFrame); const iframeWindow = printFrame.contentWindow; if (!iframeWindow) { console.error("IFrame window not found"); document.body.removeChild(printFrame); return; } try { iframeWindow.document.open(); const clonedContent = resumeContent.cloneNode(true) as HTMLElement; const selectedFontFamily = normalizeFontFamily(fontFamily); const transformValue = clonedContent.style.transform || ""; const match = transformValue.match(/scale\(([\d.]+)\)/); if (match) { const scale = Number(match[1]); if (Number.isFinite(scale) && scale > 0 && scale < 1) { // 打印时使用 zoom 参与分页布局计算,比 transform 更接近最终分页效果 clonedContent.style.removeProperty("transform"); clonedContent.style.removeProperty("transform-origin"); clonedContent.style.setProperty("width", "100%"); clonedContent.style.setProperty("zoom", String(scale)); } } clonedContent.style.setProperty("font-family", selectedFontFamily, "important"); const fontFaceStyles = await getFontFaceCss(selectedFontFamily); const htmlContent = `