【问题标题】:PDF: How to Optimize Filesize & Convert to PNG (embedded fonts problem)PDF:如何优化文件大小并转换为 PNG(嵌入字体问题)
【发布时间】:2010-09-23 02:20:52
【问题描述】:

我有一个 PDF,其中嵌入了我似乎无法使用的字体。现在,我正在使用 GhostScript 并尝试做两件事:

  • 最小化 PDF 文件大小:

    gswin32c -dSAFER -dBATCH -dNOPAUSE -dQUIET -sDEVICE=pdfwrite -sOutputFile=output.pdf input.pdf

  • 将PDF转换为PNG(超级示例,用于创建其他缩略图):

    gswin32c -dSAFER -dBATCH -dNOPAUSE -dQUIET -dFirstPage=1 -dLastPage=1 -r288 -sDEVICE=png16m -sOutputFile=output.pdf input.pdf

上述方法在处理扫描文档时效果很好。但是当我对嵌入字体的 PDF 运行它们时(PDF 是由应用程序动态生成的),它失败了。这是我得到的错误:

GPL Ghostscript 8.71: Warning: 'loca' length 274 is greater than numGlyphs 136 i
n the font UUGHDE+ArialMT.
GPL Ghostscript 8.71: Warning: 'loca' length 274 is greater than numGlyphs 136 i
n the font UUGHDE+ArialMT.
GPL Ghostscript 8.71: Warning: 'loca' length 188 is greater than numGlyphs 93 in
 the font UUGHDE+Arial-BoldMT.
GPL Ghostscript 8.71: Warning: 'loca' length 188 is greater than numGlyphs 93 in
 the font UUGHDE+Arial-BoldMT.

除了 GhostScript,我还可以访问 PDFTK 和 ImageMagick(可能会被 GraphicsMagick 取代)。我也愿意接受其他解决方案。

在 WAMP 上进行开发。部署到 LAMP。

建议?

【问题讨论】:

标签: pdf imagemagick ghostscript pdftk graphicsmagick


【解决方案1】:

PDF 中使用的字体似乎是 OpenType 字体。创建这些 PDF 的软件似乎对字体进行了子集化。在此软件(“即时生成 PDF”——它也是 Ghostscript 吗?!?)的字体嵌入和子集化期间,似乎出现了一个问题,导致它不 100% 符合规范。

'local' 表是 OpenType 字体描述的一部分。它们代表所有字形位置的索引。

现在您可以使用 Ghostscript 处理这些不完全“洁净”的 PDF。 Ghostscript 发出警告,但没有错误。

GS 错误通常意味着:“我将中止进一步处理。我无法解决问题或修复这个损坏的文件。如果我已经编写了输出文件,它们将毫无用处。”

GS 警告通常意味着:“我遇到了问题。但我会继续处理输入并解决它。我已经编写了一个有效的输出文件。但你最好检查一下,尤其是它的保真度!”

您看到的警告(不是错误!)的意思是:

  1. 根据表格,有问题的子集字体之一声称字形的数量为 188。
  2. 但实际上,实际字体描述仅包含 93 种字形形状的定义。

【讨论】:

    猜你喜欢
    • 2010-10-23
    • 1970-01-01
    • 1970-01-01
    • 2016-01-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-09
    • 2012-10-03
    相关资源
    最近更新 更多