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

时间:2012-10-12 11:14:22

标签: pdf fonts pdf-generation true-type-fonts pdftk

我使用pdftk来修复损坏的PDF文件中的某些失败,但我遇到了另一个问题,pdftk没有修复(或者至少我不知道如何修复)。

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

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

2 个答案:

答案 0 :(得分:23)

您可以使用 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

另见答案:

答案 1 :(得分:4)

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

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

中间postscript文件比输入文件(56KB)大得多(650KB)但是得到的PDF再次大小适中(82KB)。

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

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

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