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

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

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

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

【问题讨论】:

    标签: pdf fonts pdf-generation truetype pdftk


    【解决方案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
    

    另请参阅此答案:

    【讨论】:

    • 在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。那行得通,我不需要为其他答案(stackoverflow.com/a/13131101/414075)搜索字体的路径。
    • 直接在损坏的 pdf 上使用 ps2pdf 为我修复字体工作:ps2pdf foo.pdf foo_fixed.pdf
    猜你喜欢
    • 1970-01-01
    • 2018-07-13
    • 2010-11-13
    • 2021-03-18
    • 2018-08-09
    • 2010-12-19
    • 1970-01-01
    • 2011-03-30
    • 1970-01-01
    相关资源
    最近更新 更多