前言

最近在阅读一本电子书的时候发现 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 标准的格式就恢复正常了。

参考资料

  • 修复pdf字体嵌入问题_NEWPLAN的专栏-CSDN博客_解决pdf字体嵌入

用 Acrobat 修复因缺少内嵌字体而乱码的 PDF 文件相关推荐

  1. php tcpdf 嵌入字体,TCPDF如何设置中文字体为内嵌字体?

    TCPDF生成pdf文件,用$pdf->SetFont('stsongstdlight', '', 14);设置字体为宋体,生成的PDF是非内嵌字体的,如果阅读者的电脑没有安装photoshop ...

  2. java生成pdf字体居中,Java生成pdf文件,解决中文乱码问题

    如下代码使用itext生成pdf文件,通过设置中文字体避免乱码. /** * AsianTest.java */ import java.io.FileOutputStream; import jav ...

  3. wxpython 内嵌字体_【wxPython】wx.font类字体

    构造函数形式为:wx.Font(pointSize,family,style,weight,underline,faceName,encoding) pointSize pointSize是字体的以磅 ...

  4. 解决微信内嵌浏览器无法响应上传文件(图片)的思路(2种办法)

    本文转载自: https://www.cnblogs.com/cai-rd/p/3930227.html 作者:cai-rd 转载请注明该声明. 进园一年多来,第一次写博客,好激动.原因主要是自己平时 ...

  5. 使内嵌式jetty服务器支持jsp

    1.jetty是什么 jetty是一个轻量级的web服务器,类似tomcat,但用起来比tomcat灵活,尤其是支持内嵌式使用.所谓内嵌式即以java语句的形式启动jetty,这样我们可以无需部署和启 ...

  6. C语言内嵌Python import时提示undefined symbol错误及解决

    项目切gcc 4.6版本时,C语言内嵌了python,运行bin文件import时出现importError错误,提示python-2.7.11/lib/python2.7/lib-dynload/_ ...

  7. LabVIEW如何打开Acrobat PDF文件

    LabVIEW如何打开Acrobat PDF文件 如何能够在LabVIEW的VI中打开一个Acrobat Reader的文档? 解答: 在LabVIEW中打开一个PDF文件最大的困难就是寻找一种可靠的 ...

  8. IEEE论文Word 转 PDF文件的字体嵌入(embedded font)和pdf 文档去除链接

    word 2010 选择 文件-> 发布pdf 确认PDF是否字体都嵌入: pdf文件双击文件->属性->字体,查看是否都嵌入,如图: PDF文档删除链接: "高级---文 ...

  9. PDF文件【由Latex、CTex或MS Word等生成】嵌入所有字体的快速解决方法

    原文地址:http://software.intel.com/zh-cn/blogs/2011/09/03/pdflatexctexms-word/?cid=sw:prccsdn1974 作者: Ji ...

最新文章

  1. 【转载】浏览器事件循环机制(event loop)
  2. CentOS7下配置bacula-web
  3. 报错解决:error: this statement may fall through [-Werror=implicit-fallthrough=]
  4. 转载 为什么要有ibgp
  5. OpenCV3实现人脸识别(一)——基于OpenCV3级联分类器实现人脸检测与眼睛检测
  6. 构建DRM系统的重要基石——EME、CDM、AES、CENC和密钥
  7. Android 功耗(14)----Android功耗 问题debug处理
  8. Java JDBC DriverManager类
  9. python协程--yield和yield from
  10. 对进程、线程和应用程序域的理解
  11. freeldr 如何调用_BootMain的
  12. 二维码生成(如何实现扫描二维码,实现网址自动跳转?):扫码直接进入网页,直接进入网址页面
  13. Java 开发必看的 5个 Github 开源项目
  14. 最速降线求解的数学模型
  15. 图灵 | 计算机器与智能
  16. 注册表的使用-入门篇
  17. Python 用户输入和循环的学习
  18. 小 tips:删除word表格下面多余的空白页
  19. 【恩墨学院】为什么用尽了办法你的系统性能还是不见改善?
  20. PHP+MySQL实现学生信息管理系统登录功能(附带源码)

热门文章

  1. openCV-python实现幻灯片渐变效果
  2. 编程入门c语言ppt,C语言入门经典-C语言编程.ppt
  3. 笔记本电脑电池充电技巧
  4. mysql人事管理系统源代码_java Swing mysql实现的人事管理系统项目源码附带视频指导教程...
  5. css实现单行、多行文本超出省略号(...)
  6. 超全面的JavaWeb笔记day22文件上传
  7. Excel 如何把一行变成对应的多行,或者多行变成对应的一行
  8. Python爬虫代理IP的使用
  9. java中的this.getclass和super.getClass(),以及继承的深入探究
  10. 在cesium中使用3D地形数据terrain builder的打开步骤