我有一个嵌入字体的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。
建议?
答案 0 :(得分:3)
PDF中使用的字体似乎是OpenType字体。创建这些PDF的软件似乎已经对字体进行了子集化。在通过该软件进行字体嵌入和子集化时(“动态生成PDF” - 它是否也是Ghostscript?!?),似乎发生了一个问题,使其不符合规范100%。
'loca'表是OpenType字体描述的一部分。它们代表所有字形位置的索引。
现在您使用Ghostscript处理这些不完全'kosher'的PDF。 Ghostscript发出警告,但没有错误。
GS错误通常意味着:“我将中止进一步处理。我无法解决问题或修复此损坏的文件。如果我已经编写了输出文件,它们将毫无用处。”
GS警告通常意味着:“我遇到了问题。但我将继续处理输入并解决它。我已经编写了一个有效的输出文件。但你最好检查它,特别是它保真!“的
您看到的警告(不错误!)意味着: