将PDF与Ghostscipt合并,忽略大纲并改为使用pdfmark

时间:2018-04-10 06:38:33

标签: merge ghostscript tableofcontents

我正在使用Batch脚本将不同的PDF合并到一个完整的文件中。

 %gsc% -dBATCH -sDEVICE=pdfwrite -sPAPERSIZE=letter -dEPSFitPage -o  %dsk%%zus%%ext% %mfd% %pth%tmp\pdfmarks

 %dsk%%zus%%ext%: Path and name of final (complete) document

 %mfd%: Path and name of docs to be merged (c:\test\1.pdf c:\test\2.pdf ...)

 %pth%tmp = path to the pdfmarks file

此外,我在脚本中创建一个pdfmark文档,gs用它来创建书签。但不幸的是,我合并的一些文档已经有了自己的书签,我还没有找到解决方法如何忽略这些。 GS应该只使用pdfmarks文件中的书签。

如何做到这一点?

1 个答案:

答案 0 :(得分:1)

首先;当您使用Ghotscript的pdfwrite设备时,您不是在“合并”PDF文件。该过程详细描述了here

重要的一点是输入文件的构造方式与输出文件的构造方式无关。如果您使用的任何其他软件依赖于以特定方式构造的文件,则它可能无法在输出PDF文件中使用。

当输入为EPS文件时,-dEPSFitPage开关会产生任何影响。如果您想“适合”PostScript或PDF文件,则需要使用-dPDFFitPage-dPSFitPage-dFitPage。但是,所有这些都依赖于您首先选择媒体大小,然后通过设置-dFIXEDMEDIA来防止它被更改。对于EPS文件,您通常会使用-dEPSCrop将媒体大小设置为EPS声明的BoundingBox。

您可以阻止PDF解释器读取轮廓树(您正在调用书签),然后通过使用-dNO_PDFMARK_OUTLINES开关从中创建pdfmark以传递给pdfwrite设备,奇怪的是没有记录,大概是疏忽。