如何修复 PDF 文件并嵌入丢失的字体

Posted

技术标签:

【中文标题】如何修复 PDF 文件并嵌入丢失的字体【英文标题】:How to repair a PDF file and embed missing fonts 【发布时间】:2012-10-03 04:43:58 【问题描述】:

我使用pdftk 修复损坏的PDF 文件中的一些故障,但我遇到了pdftk 未解决的另一个问题(或者至少我不知道该怎么做)。

我的 PDF 文件包含基于 TrueType 字体的文本,但在创建 PDF 期间未嵌入字体。现在我想将所需的字体嵌入到现有文件中。

是否有命令行工具(如pdftk)通过提供TTF 文件的路径来嵌入缺失的字体?

【问题讨论】:

【参考方案1】:

您可以使用 Ghostscript 来嵌入缺失的字体。像这样运行命令:

gs                                             \
  -o file-with-embedded-fonts.pdf              \
  -sDEVICE=pdfwrite                            \
  -dEmbedAllFonts=true                         \
  -sFONTPATH="/path/to/ttf;/other/path/to/ttf" \
   input-without-embedded-fonts.pdf

另请参阅此答案:

How do I embed fonts in an existing PDF?

【讨论】:

在win32上,如果你安装了ghostScript,命令可能如下: gswin32c -sFONTPATH=C:\Windows\Fonts -o output-pdf-with-embedded-fonts.pdf -sDEVICE=pdfwrite -dPDFSETTINGS=/prepress input-pdf-where-some-fonts-are-not-embedded.pdf(在您的系统上找到 exe 文件,如果需要,可以将其添加到 PATH -- 环境变量) @Qtax:我认为不需要——这应该是嵌入字体时 Ghostscript 的默认设置。 gs 在嵌入字体时默认进行字体子集化(即仅嵌入 PDF 中使用的字体的字形)。可以使用-dSubsetFonts=false 禁用。 这会破坏其中包含表单的 PDF 文件。有谁知道将保留表单的gs 标志? @Fuhrmanator:FOSS 软件和 PDF 表单——《FOSS 缺失或吸收的重要功能列表》一书中的一长篇......【参考方案2】:

我刚刚遇到了同样的问题(在 Ubuntu 14.04 上),我找到了以下解决方案:

安装 Acrobat Reader 将“打印到文件”打印到后记文件(“foo.ps”)和“高级 -> 打印为图像” 然后在控制台上使用ps2pdf foo.ps foo.pdf,结果是一个包含嵌入字体和原始内容的文件

中间后记文件 (650KB) 比输入文件 (56KB) 大得多,但生成的 PDF 大小又适中 (82KB)。

我不知道为什么会这样,即,

为什么“打印为图像到文件”似乎创建了图像但也保留了字体信息, 为什么 ps2pdf 会恢复此字体信息,以及 为什么生成的 PDF 中有字体,因为它应该只是一个图像,对吧?。

但结果是嵌入了所有字体且大小与原始文件相似的 PDF。

【讨论】:

它只对我有用,只需打印到 ps 文件,而不将其保存为图像。 Some people complain pdf -> ps -> pdf 转换不是要走的路,但你用这篇文章认真地把我的博士论文从厄运中救了出来。 我喜欢你的方法,但在我的情况下改变了它。我不想使用 Acrobat,所以我只是使用 evince(标准 Gnome PDF 阅读器)打印到文件,选择 Post Script(不需要图像选项),然后再次使用 ps2pdf 生成的 pdf。那行得通,我不需要为其他答案(***.com/a/13131101/414075)搜索字体的路径。 直接在损坏的 pdf 上使用 ps2pdf 为我修复字体工作:ps2pdf foo.pdf foo_fixed.pdf

以上是关于如何修复 PDF 文件并嵌入丢失的字体的主要内容,如果未能解决你的问题,请参考以下文章

解析 PDF 字体运算符丢失

Flash 可以检测丢失的嵌入字体和/或替换为可用字体吗?

使用 shadowJar 和 Scala 依赖项时如何修复丢失的 conf 文件?

java中使用itextPdf生成pdf文件 其中有个别特殊文字丢失 例如: 喆 求大能解决!!!!

Word转PDF文件,如何在PDF中嵌入字体

ppt转化为pdf时出现pdfmaker文件丢失