我正在使用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文件中的书签。
如何做到这一点?
答案 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设备,奇怪的是没有记录,大概是疏忽。