将 PDF 与 Ghostscipt 合并,忽略大纲并改用 pdfmark
merging PDFs with Ghostscipt ignoring outline and using pdfmark instead
我正在使用批处理脚本将不同的 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.pdf c:\test.pdf ...)
%pth%tmp = path to the pdfmarks file
此外,我正在 gs 用于创建书签的脚本中创建一个 pdfmark 文档。但不幸的是,我正在合并的一些文档已经有了自己的书签,我还没有找到如何忽略这些书签的解决方案。 GS 应该只使用 pdfmarks 文件中的书签。
如何做到这一点?
首先;当您使用 Ghotscript 的 pdfwrite 设备时,您不是 'merging' 个 PDF 文件。过程描述的很详细here
重要的一点是输入文件的构建方式与输出文件的构建方式无关。如果您使用的任何其他软件依赖于以特定方式构建的文件,它可能无法处理输出的 PDF 文件。
-dEPSFitPage
开关仅在输入为EPS文件时有效。如果您想要 'fit' PostScript 或 PDF 文件,那么您需要使用 -dPDFFitPage
、-dPSFitPage
或只是 -dFitPage
。然而,所有这些都依赖于您首先选择媒体大小,然后通过设置 -dFIXEDMEDIA
来防止它被更改。对于 EPS 文件,您通常会使用 -dEPSCrop
,它将媒体大小设置为 EPS 声明的 BoundingBox。
您可以阻止 PDF 解释器读取大纲树(您称之为书签),然后使用 -dNO_PDFMARK_OUTLINES
开关从中创建一个 pdfmark 以传递给 pdfwrite 设备,奇怪的是没有记录,大概是一个疏忽。
我正在使用批处理脚本将不同的 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.pdf c:\test.pdf ...)
%pth%tmp = path to the pdfmarks file
此外,我正在 gs 用于创建书签的脚本中创建一个 pdfmark 文档。但不幸的是,我正在合并的一些文档已经有了自己的书签,我还没有找到如何忽略这些书签的解决方案。 GS 应该只使用 pdfmarks 文件中的书签。
如何做到这一点?
首先;当您使用 Ghotscript 的 pdfwrite 设备时,您不是 'merging' 个 PDF 文件。过程描述的很详细here
重要的一点是输入文件的构建方式与输出文件的构建方式无关。如果您使用的任何其他软件依赖于以特定方式构建的文件,它可能无法处理输出的 PDF 文件。
-dEPSFitPage
开关仅在输入为EPS文件时有效。如果您想要 'fit' PostScript 或 PDF 文件,那么您需要使用 -dPDFFitPage
、-dPSFitPage
或只是 -dFitPage
。然而,所有这些都依赖于您首先选择媒体大小,然后通过设置 -dFIXEDMEDIA
来防止它被更改。对于 EPS 文件,您通常会使用 -dEPSCrop
,它将媒体大小设置为 EPS 声明的 BoundingBox。
您可以阻止 PDF 解释器读取大纲树(您称之为书签),然后使用 -dNO_PDFMARK_OUTLINES
开关从中创建一个 pdfmark 以传递给 pdfwrite 设备,奇怪的是没有记录,大概是一个疏忽。