【问题标题】:Add page to multiple PDFs in batch without messing with fonts将页面批量添加到多个 PDF 而不会弄乱字体
【发布时间】:2014-12-06 08:25:33
【问题描述】:

我正在尝试使用 Ghostscript 将 PDF 作为“最后一页”附加到多个其他 PDF。我遇到的问题是 Ghostscript 遍历整个 PDF 并进行了一堆字体替换。

我正在使用以下批处理脚本:

FOR %%G IN (*.pdf) DO IF NOT %%G==lastpage.pdf gswin64c -sDEVICE=pdfwrite -sOutputFile="output\%%G" -dNOPAUSE -dBATCH  "%%G" lastpage.pdf

示例错误:

Page 12
Substituting font Courier for GGCJBF+Courier.

我有时也会遇到其他错误,例如:

jbig2dec FATAL ERROR decoding image: prevent DOS while decoding height classes (segment 0x00)
failed to create parsed JBIG2GLOBALS object.
**** Error reading a content stream. The page may be incomplete.
**** File did not complete the page properly and may be damaged.

我需要 gs 做的就是将我的 lastpage.pdf 附加到现有的 PDF 而不遍历我要附加的整个 PDF,尤其是在字体替换时,因为我不会有大部分其他人在其 PDF 中使用的字体。

是否可以在 gs 中简单地追加而不遍历 PDF 的每一页?是否有其他工具可以批量添加 PDF 而不会出现此问题?

【问题讨论】:

  • 试试PDFToolkitserver 版本是执行此类操作的命令行。

标签: windows batch-file pdf ghostscript


【解决方案1】:

您需要注意 Ghostscript 不会简单地操作传入的 PDF 文件,因此您不是在“附加”页面。它所做的是将传入的文件解释为标记操作,将它们传递给设备,然后该设备对它们采取进一步的行动。渲染设备写入位图,pdfwrite 将标记操作重新组合成一个全新的文件。

这就是它“遍历整个文件”的原因,它的工作方式。这样做有优点(例如可以更改文件内容)和缺点。

现在,如果您要替换嵌入字体的字体,则嵌入字体有问题(或者您可能正在使用带有错误的真正旧版本的 Ghostscript)。您可以尝试更新版本的 Ghostscript,但您永远无法摆脱对整个输入文件的处理。

为什么不试试 pdftk。

【讨论】:

  • 谢谢!不知道 gs 是这样工作的,所以感谢您的解释。 PDFtk 似乎可以胜任。
  • 我最近遇到的一个类似问题:我已经配置ghostscript-9.15来避免图像的有损编码(-dColorImageFilter=/FlatEncode -dAutoFilterColorImages=false等),但是生成的PDF中的图像显然是编码的带有有损编码器。此外,我收到诸如“jbig2dec FATAL ERROR 解码图像:在解码高度类时防止 DOS”之类的错误消息,这意味着使用了有损编码器。有没有办法让ghostscript永远不会重新编码图像?
  • 这些消息(来自您发布的内容)来自 decoder,这表明您的原始图像是 JBIG2 图像,因此是单色的。所以 ColorImage 控件不会影响它(它也表明图像以某种方式损坏)。我的第一个建议是使用当前代码(撰写本文时为 9.18),如果问题仍然存在,请打开错误报告,附上示例和清晰的图像描述,“显然用有损编码器编码”跨度>
猜你喜欢
  • 2017-08-12
  • 1970-01-01
  • 1970-01-01
  • 2013-06-20
  • 2021-08-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多