合并/转换多个PDF文件为一个PDF

1516

如何合并或转换多个PDF文件为一个大的PDF文件?

我尝试了以下方法,但目标文件的内容并不如预期:

convert file1.pdf file2.pdf merged.pdf

我需要一个非常简单/基本的命令行(CLI)解决方案。最好的情况是,我可以将合并/转换的输出直接传递到 pdf2ps(就像我在先前提问的问题中尝试过的那样:Linux piping ( convert -> pdf2ps -> lp))。


4
可能因人而异,但这种方法的输出文件似乎分辨率不如pdfunite,并且生成的文件大小也比pdfunite的输出文件大。 - sabujp
1
无论这些解决方案是否保留链接,都在此帖子中进行了讨论。如果您想保留链接(可能还包括其他注释),请使用:如果需要命令行界面,请使用pdftk, 如果需要图形用户界面,请使用pdfsam, 如果需要Web界面,请使用sejda。 - Clément
1
convert 命令行来自于 ImageMagick,它会在执行其他操作之前将 PDF 转换为图像。 - Alexis Wilke
2
pdftk PDF1.pdf PDF2.pdf cat output PDF3.pdf 运行正常。 - Sihat Afnan
显示剩余4条评论
23个回答

1
如果您想使用Ghostscript合并目录中的所有PDF文件,可以使用find命令来完成。以下是一个示例。
find . -name '*.pdf' -exec gs -o -sDEVICE=pdfwrite -dPDFSETTINGS=/prepress -sOutputFile=../out.pdf {} +

将查找当前目录中的所有pdf文件,并在父目录中创建out.pdf文件。 如果需要使用ghostscript快速处理整个目录,则可能会很有用。

0

另一个选项,如果您想选择合并文档中的页面也很有用:

pdfjoin image.jpg '-' doc_only_first_pages.pdf '1,2' doc_with_all_pages.pdf '-'

它随附于texlive-extra-utils软件包中


该包名可能指的是一个Debian软件包。 - tripleee
我正在运行Debian GNU/Linux 11 (bullseye),并已安装了texlive-extra-utils,但是在我的系统上找不到pdfjoin。 我的texlive-extra-utils版本为2020.20210202-3。 有任何想法为什么会这样吗?您是否实际上是指Debian发行版的texlive?这应该添加到您的答案中。 - GPWR

0
我喜欢Chasmo的想法,但我更喜欢利用像这样的优势
convert $(ls *.pdf) ../merged.pdf

将多个源文件传递给convert命令将把它们合并成一个常见的PDF文件。该命令将当前目录中所有扩展名为.pdf的文件合并到父目录下的merged.pdf文件中。

5
鉴于这个内容与原问题非常相似,看起来应该是一条评论而不是回答。获得更多的声望后,您将能够发布评论。在那之前,请不要使用回答作为解决方法。 - Nathan Tuggy
1
@Silfheed 不,它回答了这个问题!尽管答案可能需要更详细的阐述。 - peterh
7
除非你需要将矢量转换为光栅并且不需要再转回矢量,否则不要使用转换工具来处理后缀名为PostScript或PDF的文件。这是一个非常糟糕的想法,难以言喻。 - markgalassi
15
使用$(ls *.pdf)代替简单通配符*.pdf的意义是什么? - firegurafiku
1
此外,参考@firegurafiku的答案,使用ls *.pdf通配符会失去对合并文件顺序的控制。例如,以下列表:1.pdf、2.pdf、3.pdf、...、10.pdf、...、100.pdf实际上会像这样合并:1.pdf、10.pdf、100.pdf、2.pdf、3.pdf(由于默认的Linux文件排序方式 - 在这里您可以了解更多有关此问题的详细信息 - https://dev59.com/S2Ag5IYBdhLWcg3w_fLV)。 - Egel
这将在合并PDF文件之前将它们全部转换为位图。除非您知道原始文件仅包含位图数据,否则这不是一个好的解决方案。 - Francesco Potortì

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接