如何将多个PDF文件合并/转换为一个大型PDF文件?

我尝试了以下操作,但目标文件的内容与预期不符:

convert file1.pdf file2.pdf merged.pdf

我需要一个非常简单/基本的命令行(CLI)解决方案。最好是我可以将合并/转换的输出直接管道化为pdf2ps(正如我之前在这里提出的问题:Linux管道化(convert->pdf2ps->lp)中所尝试的那样)。


当前回答

pdfunite可以合并整个PDF。例如,如果您想要file1.pdf中的第2-7页和file2.pdf中的1,3,4页,则必须使用pdfsepart将文件拆分为单独的pdf,以便为每个页面提供给pdfunite。

此时,您可能需要一个具有更多选项的程序。qpdf是我发现的处理PDF的最佳工具。pdftk更大、更慢,Red Hat/Fedora不打包它,因为它依赖于gcj。其他PDF实用程序具有Mono或Python依赖关系。我发现qpdf生成的输出文件比使用pdfseparate和pdfunite将页面组装成30页的输出PDF要小得多,分别为970kB和16450kB。因为它提供了更多的选项,qpdf的命令行并没有那么简单;合并文件1和文件2的原始请求可以使用

qpdf --empty --pages file1.pdf file2.pdf -- merged.pdf

其他回答

如果您有多个文件并且不想逐一键入名称,这是最简单的解决方案:

qpdf --empty --pages *.pdf -- out.pdf

考虑到pdfunite是poppler的一部分,它有更高的安装机会,使用也比pdftk简单:

pdfunite in-1.pdf in-2.pdf in-n.pdf out.pdf

只需确保您记得提供out.pdf,否则它将覆盖命令中的最后一个输入文件

更安全的解决方案可能包括不存在的测试以输出文件为目标

export output_file=out.pdf && \
! test -e $output_file && \
pdfunite in-1.pdf in-2.pdf in-n.pdf $output_file

此外,pdfjoin a.pdf.pdf将创建一个新的b-joined.pdf,其中包含a.pdf和b.pdf的内容

如果要将所有下载的图像转换为一个pdf,请执行

转换img{0..19}.jpg幻灯片.pdf

PdfCpu非常有用:

pdfcpu merge c.pdf a.pdf b.pdf

https://pdfcpu.io/core/merge