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

ghostscript: how to marge in a single pdf different pages from multiple pdf

我正在尝试使用 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 页

我喜欢 finished.pdf 第 1 页 PDF1.pdf 和第 3 页 PDF2.pdf..

首先,正如我一直说的,Ghostscript(和 pdfwrite 设备)不是'merge'、'concatenate'、'modify'、'edit' 或其他,PDF 文件。

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

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

也就是说,PDF 解释器从 PDF 文件中提取了大量 'metadata',并传递给 pdfwrite 设备,因此 'looks like'PDF 是相同的。但是你一定要注意,你出来的PDF文件不是你开始的那个。

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

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

或者,您可以查看一个旨在用于此类工作的工具,而 Ghostscript 确实不是。