如何将多个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)中所尝试的那样)。
当前回答
你可以看到使用免费和开源的pdftools(免责声明:我是它的作者)。
它基本上是Latex pdfpages包的Python接口。
要逐个合并pdf文件,您可以运行:
pdftools --input-file file1.pdf --input-file file2.pdf --output output.pdf
要将目录中的所有pdf文件合并在一起,可以运行:
pdftools --input-dir ./dir_with_pdfs --output output.pdf
其他回答
您可以直接使用convert命令,
e.g.
convert sub1.pdf sub2.pdf sub3.pdf merged.pdf
我喜欢Chasmo的想法,但我更倾向于利用诸如
convert $(ls *.pdf) ../merged.pdf
提供多个源文件进行转换,从而将它们合并为一个通用的pdf。此命令将实际目录中所有具有.pdfextension的文件合并到父目录中的merged.pdf中。
pdfconcat -o out.pdf 1.pdf 2.pdf
``pdfconcat是一个用ANSI C编写的小型快速命令行实用程序,可以将多个PDF文件连接(合并)成一个长PDF文档
此外,pdfjoin a.pdf.pdf将创建一个新的b-joined.pdf,其中包含a.pdf和b.pdf的内容
我支持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)