如何将多个PDF文件合并/转换为一个大型PDF文件?
我尝试了以下操作,但目标文件的内容与预期不符:
convert file1.pdf file2.pdf merged.pdf
我需要一个非常简单/基本的命令行(CLI)解决方案。最好是我可以将合并/转换的输出直接管道化为pdf2ps(正如我之前在这里提出的问题:Linux管道化(convert->pdf2ps->lp)中所尝试的那样)。
如何将多个PDF文件合并/转换为一个大型PDF文件?
我尝试了以下操作,但目标文件的内容与预期不符:
convert file1.pdf file2.pdf merged.pdf
我需要一个非常简单/基本的命令行(CLI)解决方案。最好是我可以将合并/转换的输出直接管道化为pdf2ps(正如我之前在这里提出的问题:Linux管道化(convert->pdf2ps->lp)中所尝试的那样)。
当前回答
我支持pdfunite的建议。然而,当我试图合并>2k个PDF文件时,我得到了参数列表太长的错误。
我求助于Python和两个外部包:PyPDF2(处理所有与PDF相关的事情)和natsort(对目录的文件名进行“自然”排序)。如果这可以帮助某人:
from pathlib import Path
from PyPDF2 import PdfMerger
import natsort
DIR = Path("dir-with-pdfs/")
OUTPUT = "output.pdf"
paths = DIR.glob("*.pdf")
paths = natsort.natsorted(paths)
merger = PdfMerger()
for path in paths:
merger.append(path)
merger.write(OUTPUT)
其他回答
使用PyPI中的pdftools。
下载tar.gz文件并解压缩,然后运行如下命令
python pdftools-1.1.0/pdfmerge.py -o output.pdf -d file1.pdf file2.pdf file3
在运行上述命令之前,应该安装python3
此工具支持以下内容
添加插入去除旋转分裂合并拉链
你可以在GitHub上找到更多细节,它是开源的
如果您想使用Ghostscript将所有PDF文件连接到一个目录中,可以使用find来实现这一点。这里有一个例子
find . -name '*.pdf' -exec gs -o -sDEVICE=pdfwrite -dPDFSETTINGS=/prepress -sOutputFile=../out.pdf {} +
将在当前目录中找到所有pdf,并在父目录中创建out.pdf。如果他们正在寻找一种快速的方法来使用ghostscript创建整个目录,可能会很有用。
我支持pdfunite的建议。然而,当我试图合并>2k个PDF文件时,我得到了参数列表太长的错误。
我求助于Python和两个外部包:PyPDF2(处理所有与PDF相关的事情)和natsort(对目录的文件名进行“自然”排序)。如果这可以帮助某人:
from pathlib import Path
from PyPDF2 import PdfMerger
import natsort
DIR = Path("dir-with-pdfs/")
OUTPUT = "output.pdf"
paths = DIR.glob("*.pdf")
paths = natsort.natsorted(paths)
merger = PdfMerger()
for path in paths:
merger.append(path)
merger.write(OUTPUT)
如果您有多个文件并且不想逐一键入名称,这是最简单的解决方案:
qpdf --empty --pages *.pdf -- out.pdf
您可以使用sejda控制台,免费且开源。解压缩并运行sejda console merge-f file1.pdf file2.pdf-o merged.pdf
它保留了书签、链接注释、acroforms等。实际上,它有很多选项可以使用,只需运行sejda console merge-h即可查看所有选项。