代码之家  ›  专栏  ›  技术社区  ›  Mike

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

  •  2
  • Mike  · 技术社区  · 6 年前

    我正在使用批处理脚本将不同的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 回复  |  直到 6 年前
        1
  •  3
  •   KenS    6 年前

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

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

    这个 -dEPSFitPage 转换 只有 输入为EPS文件时具有任何效果。如果要“适应”PostScript或PDF文件,则需要使用 -dPDFFitPage ,则, -dPSFitPage 或者只是 -dFitPage 但是,所有这些都取决于您首先选择媒体大小,然后通过设置 -dFIXEDMEDIA 。对于EPS文件,您通常会使用 -dEPSCrop 将媒体大小设置为EPS声明的边界框。

    您可以使用 -dNO_PDFMARK_OUTLINES 奇怪的是,这个开关并没有被记录下来,可能是一个疏忽。