Skip to content

Commit 4088cc0

Browse files
committed
fix: PDF 预览启用系统字体回退,修复 Chrome 中文乱码 (Close #66)
LibreOffice 转出的 PDF 可能未完整嵌入中文字体,useSystemFonts=false 阻止了 pdf.js 回退到系统字体,导致 Chrome 预览乱码。改为 true 后 pdf.js 仍优先使用嵌入字体,仅在缺失时回退。
1 parent f731b2e commit 4088cc0

1 file changed

Lines changed: 1 addition & 8 deletions

File tree

frontend/src/components/print/PdfCanvas.vue

Lines changed: 1 addition & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -120,20 +120,13 @@ async function renderPdf() {
120120
pdfDoc = null
121121
}
122122
123-
// 关键参数说明:
124-
// - cMapUrl / cMapPacked:支持 UniGB-UCS2-H 等中文外部 CMap,修复 CJK 预览空白
125-
// - standardFontDataUrl:提供标准 14 字体数据(Helvetica/Courier/Times 等)
126-
// - disableFontFace=false:允许用 @font-face 注入字体(默认就是 false,显式保留以防升级回归)
127-
// - useSystemFonts=false:优先使用 PDF 中嵌入的字体而非系统字体,
128-
// 配合后端 normalizePDF(gs pdfwrite 嵌入 TrueType 子集),确保预览与打印字形一致
129-
// - isEvalSupported=false:CSP/严格 Worker 环境下避免 eval 被拦截
130123
const doc = await pdfjsLib.getDocument({
131124
url: props.src,
132125
cMapUrl: '/pdfjs/cmaps/',
133126
cMapPacked: true,
134127
standardFontDataUrl: '/pdfjs/standard_fonts/',
135128
disableFontFace: false,
136-
useSystemFonts: false,
129+
useSystemFonts: true,
137130
isEvalSupported: false
138131
}).promise
139132

0 commit comments

Comments
 (0)