使用 PDF.js 预览 PDF 文件,部分 PDF 字体显示乱码。
PDF 文件信息:
- 字体类型:CIDFont / Type0(嵌入式中文字体)
- 生成工具:WPS Office / Adobe Acrobat 导出
环境信息:
- PDF.js 版本:4.x
浏览器:Chrome 最新版
相关代码:const loadingTask = pdfjsLib.getDocument({ url: 'example.pdf', cMapUrl: 'https://cdn.jsdelivr.net/npm/pdfjs-dist@4.0.379/cmaps/', cMapPacked: true, standardFontDataUrl: 'https://cdn.jsdelivr.net/npm/pdfjs-dist@4.0.379/standard_fonts/', });请问如何正确配置让文字正常显示?是否需要服务端预处理 PDF?
已尝试的方案(均未生效):
- 配置
cMapUrl和standardFontDataUrl - CSS
@font-face设置 fallback 字体 - PDF.js worker 版本已启用
- 浏览器控制台无字体加载失败日志,无报错
期望效果: - 遇到不支持的字体时,自动 fallback 到默认字体(宋体/微软雅黑)
- 或加载自定义 TTF 作为替代字体
环境: - PDF.js 4.x + Chrome 最新版 + Worker 模式
方法(推荐)
Mac / Linux 安装
Windows
下载: https://www.ghostscript.com
Windows命令使用
作用:
嵌入完整字体(非子集)
增加 ToUnicode 映射
Node.js 调用写法