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

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

convert file1.pdf file2.pdf merged.pdf

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


当前回答

虽然它不是命令行解决方案,但它可能会帮助macos用户:

选择您的PDF文件右键单击突出显示的文件选择快速操作>创建PDF

其他回答

您可以使用sejda控制台,免费且开源。解压缩并运行sejda console merge-f file1.pdf file2.pdf-o merged.pdf

它保留了书签、链接注释、acroforms等。实际上,它有很多选项可以使用,只需运行sejda console merge-h即可查看所有选项。

PdfCpu非常有用:

pdfcpu merge c.pdf a.pdf b.pdf

https://pdfcpu.io/core/merge

作为PyMuPDF(MuPDF的Python绑定)的开发人员之一,我有偏见。

你可以很容易地用它做你想做的事情(还有更多)。骨架代码的工作原理如下:

#-------------------------------------------------
import fitz         # the binding PyMuPDF
fout = fitz.open()  # new PDF for joined output
flist = ["1.pdf", "2.pdf", ...]  # list of filenames to be joined

for f in flist:
    fin = fitz.open(f)  # open an input file
    fout.insertPDF(fin) # append f
    fin.close()

fout.save("joined.pdf")
#-------------------------------------------------

仅此而已。有几个选项可用于仅选择页面范围、维护联合目录、反转页面顺序或更改页面旋转等。

我们在PyPi上。

虽然它不是命令行解决方案,但它可能会帮助macos用户:

选择您的PDF文件右键单击突出显示的文件选择快速操作>创建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