ghostscript:如何在单个 pdf 中将多个 pdf 的不同页面合并

问题描述 投票:0回答:2

我正在尝试使用 Ghostscript 将多个 pdf 文件中的特定页面合并到一个 pdf 文件中。有可能做到吗? 我只是尝试:

'/usr/local/bin/gs''-dBATCH''-dNOPAUSE'-q -sDEVICE=pdfwrite -sOutputFile=finished.pdf pdf1.pdf pdf2.pdf ...

它可以工作,但是会合并所有 pdf 页面。我只需要一个人。

ES: PDF1.pdf共5页 PDF2.pdf 10页

我喜欢一个完成的.pdf,其中包含 PDF1.pdf 第 1 页和 PDF2.pdf 第 3 页..

pdf merge ghostscript
2个回答
1
投票

首先,正如我一直说的,Ghostscript(和 pdfwrite 设备)不会“合并”、“连接”、“修改”、“编辑”或其他 PDF 文件。

当您向 Ghostscript 提供输入时,它会完全解释它,生成一系列图形基元,然后将其传递到设备。对于低级设备,它们使用图形库将图元渲染为位图。高级(或矢量)设备以它们创建的任何输出格式创建与图形基元等效的图形图元,并将其输出。

因此,pdfwrite 的输出是一个 PDF 文件。该 PDF 文件的内部结构与输入无关,即使输入是 PDF 文件也是如此。唯一期望的是外观应该是等效的。

也就是说,PDF 解释器从 PDF 文件中提取大量“元数据”,并将其传递到 pdfwrite 设备,因此 PDF“看起来”是相同的。但您必须注意,您得到的 PDF 文件不是您开始时使用的 PDF 文件。

现在,Ghostscript 的 PDF 解释器一次只能处理一个 PDF 文件。因此,无法解释一个 PDF 文件中的页面、另一个 PDF 文件中的页面、第一个 PDF 文件中的页面,依此类推。

使用 Ghostscript 做您想做的事情的唯一方法是为您想要处理的每个文件的每一页创建一个 PDF 文件(设置 OutputFile=%d.pdf 以每页创建一个 PDF),然后运行再次使用 Ghostscript,将每个页面按照所需的顺序依次输入到 Ghostscript。因为您现在一次只处理一个 PDF 文件,所以这会起作用。

或者,您可以查看一个“专用于”此类工作的工具,但 Ghostscript 确实不是。

据我所知,这需要分成多个命令:

0
投票
# Pick pages 5-9 for file 1 gs -dBATCH -dNOPAUSE -dQUIET -sOutputFile=1.pdf -dFirstPage=5 -dLastPage=9 -sDEVICE=pdfwrite file1.pdf # Pick pages 1-10 for file 2 gs -dBATCH -dNOPAUSE -dQUIET -sOutputFile=2.pdf -dFirstPage=1 -dLastPage=10 -sDEVICE=pdfwrite file2.pdf # Merge gs -dNOPAUSE -dQUIET -sDEVICE=pdfwrite -sOUTPUTFILE=merged.pdf -dBATCH 1.pdf 2.pdf


© www.soinside.com 2019 - 2024. All rights reserved.