遇到的问题
通过软件转换得到的PDF经常没有自己嵌入字体,导致显示很多文字显示空白,尤其是政府公文经常要求要使用GB2312的老字体(如仿宋_GB2312、楷体_GB2312),用下面的方法修改另存为即可解决,前提是电脑上得安装有相应的字体。
前言
最近在阅读一本电子书的时候发现 PDF 文件中只要是英文、数字、空格的位置都是乱码,影响阅读。这应该是 PDF 文档没有将所需要的所有字体内嵌到文档中,缺少字体导致的。比如某东的电子发票在不同的 PDF 阅读软件上打开会出现不同的字体。
这里分享一下修复文档的整个过程。
需要软件
- Adobe Acrobat Pro DC 2020
- 文件中尚未内嵌的字体(方正 EU 系列)
检查字体缺失
PDF 文档出现乱码,首先要检查是否是缺失字体。用 Acrobat 打开 PDF 文件,菜单栏选择 “文件”、“属性”、“字体” 选项卡,可以看到该 PDF 文档中使用的所有字体。 已内嵌文档的字体会显示 “(已嵌入)”,未嵌入的字体,如图中的 EU-BX.ttf
字体是方正的西文 “白斜” 字体,由于不同的 PDF 阅读器遇到字体缺失后会选择一个缺省字体替代,而不同字体的字符集不同,所以会出现乱码的情况。
缺失字体修复
首先找到缺失的字体文件,安装到电脑中。一般来说,安装好缺失字体后再用 PDF 阅读器查看文档就不会乱码,文档恢复正常。但是 PDF 文件是跨平台的便携式文档,如果要在其它设备上不出问题还是要将所需的字体全部嵌入。
回到 Acrobat 的 “主页”,添加 “印刷制作” 工具。 打开要修复的文件,在右侧工具栏选择 “印刷制作”、“印前检查”。
“印前检查” 选择 “PDF 修正”、“嵌入缺失的字体”,然后点击 “分析和修复”,保存修复后的文件,稍等一会。 经过一小段时间的修复,如果最终的结果是 “没有找到问题” 说明文件已成功修复。 打开修复后的文件,查看文档属性,缺失的字体已经嵌入,可以正常显示。 修复前后的扉页
吐槽
PDF 文件格式相当灵活,各种编译器、阅读器在实现上没有统一的标准,所以导致 PDF 文件容易出现各种奇奇怪怪的问题。比如某文档扫描 App 生成的 PDF 无法用 Python 的 PyPDF 编辑,报错原因是页码错误。经过我测试发现是 PDF 不符合标准,将文件转换成 PDF/A 标准的格式就恢复正常了。