批量添加页面到多个PDF文件而不会混淆字体

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

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

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. 

我需要的所有工作就是将我的lastpage.pdf追加到现有的PDF中, 而不需要遍历我要追加的所有PDF,尤其是字体replace,因为我不会使用其他人在其PDF中使用的大部分字体。

是否有可能在gs中简单追加而不通过PDF的每一页? 是否有另一个工具,可以批量追加PDF文件而不会出现这个问题?

你需要知道,Ghostscript不会简单地操纵传入的PDF文件,所以你不是“追加”一个页面。 它所做的是将传入的文件解释为标记操作,并将其传递给设备,然后该设备对其进行进一步操作。 渲染设备写入位图,pdfwrite将标记操作重新组装成一个全新的文件。

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

现在,如果您正在获取嵌入字体的字体替换,则嵌入字体会出现问题(或者您正在使用一个非常旧版本的Ghostscript)。 你可以尝试更新版本的Ghostscript,但是你永远不会处理整个输入文件。

为什么不试试pdftk。