如何合并或转换多个PDF文件为一个大的PDF文件?
我尝试了以下方法,但目标文件的内容并不如预期:
convert file1.pdf file2.pdf merged.pdf
我需要一个非常简单/基本的命令行(CLI)解决方案。最好的情况是,我可以将合并/转换的输出直接传递到 pdf2ps
(就像我在先前提问的问题中尝试过的那样:Linux piping ( convert -> pdf2ps -> lp))。
如何合并或转换多个PDF文件为一个大的PDF文件?
我尝试了以下方法,但目标文件的内容并不如预期:
convert file1.pdf file2.pdf merged.pdf
我需要一个非常简单/基本的命令行(CLI)解决方案。最好的情况是,我可以将合并/转换的输出直接传递到 pdf2ps
(就像我在先前提问的问题中尝试过的那样:Linux piping ( convert -> pdf2ps -> lp))。
尝试使用好的Ghostscript:
gs -dBATCH -dNOPAUSE -q -sDEVICE=pdfwrite -sOutputFile=merged.pdf mine1.pdf mine2.pdf
或者甚至可以采用这种方式来改进低分辨率PDF文件的版本(感谢Adriano指出):
gs -dBATCH -dNOPAUSE -q -sDEVICE=pdfwrite -dPDFSETTINGS=/prepress -sOutputFile=merged.pdf mine1.pdf mine2.pdf
convert -density 300x300 -quality 100 mine1.pdf mine2.pdf merged.pdf
gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dPDFSETTINGS=/default -dNOPAUSE -dQUIET -dBATCH -dDetectDuplicateImages -dCompressFonts=true -r150 -sOutputFile=output.pdf input.pdf
更新 #2: 如果您需要“烧录”编辑并压缩使用Acrobat制作的PDF文件,则以下内容可能会有所帮助:
gs -q -dNOPAUSE -dBATCH -dSAFER -sDEVICE=pdfwrite -dCompatibilityLevel=1.3 -dPDFSETTINGS=/screen -dEmbedAllFonts=true -dSubsetFonts=true -dColorImageDownsampleType=/Bicubic -dColorImageResolution=144 -dGrayImageDownsampleType=/Bicubic -dGrayImageResolution=144 -dMonoImageDownsampleType=/Bicubic -dMonoImageResolution=144 -sOutputFile=compressed.pdf withedits.pdf
-dPDFSETTINGS=/prepress
这个参数可以很好地解决页面过宽、导致水平滚动条出现的问题,具有旋转页面的作用。 - r_31415.bash_profile
文件中即可创建一个方便的快捷方式: pdfmerge() { gs -dBATCH -dNOPAUSE -q -sDEVICE=pdfwrite -dPDFSETTINGS=/prepress -sOutputFile=$@ ; }
。如果你需要经常使用该命令,这能够帮您节省打字时间。使用方法如下:pdfmerge merged.pdf mine1.pdf mine2.pdf
。 - Torbengs -dBATCH -dNOPAUSE -q -sDEVICE=pdfwrite -dPDFSETTINGS=/prepress -sOutputFile=merged.pdf mine1.pdf mine2.pdf
可以缩短为 gs -q -sDEVICE=pdfwrite -dPDFSETTINGS=/prepress -o merged.pdf mine1.pdf mine2.pdf
。根据文档,"作为一种便捷的速记方式,您可以使用 -o
选项,后跟上述输出文件的规范。-o
选项还设置了 -dBATCH
和 -dNOPAUSE
选项。这旨在是调用 ghostscript 快速转换一个或多个输入文件的快速方式." - MiniMaxdPrinted=false
来保留超链接,否则会破坏除第一个pdf以外的所有链接。请参考 https://tex.stackexchange.com/questions/245801/local-hyperlinks-broken-after-pdf-processing-with-ghostscript - qdread抱歉,我自己用谷歌和一点运气找到了答案 :)
对于那些有兴趣的人;
我在我们的 Debian 服务器上安装了 pdftk(PDF 工具包),并使用以下命令实现了所需的输出:
pdftk file1.pdf file2.pdf cat output output.pdf
或者
gs -q -sPAPERSIZE=letter -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -sOutputFile=output.pdf file1.pdf file2.pdf file3.pdf ...
这可以直接通过管道传送到pdf2ps中。
gs -q -sPAPERSIZE=letter -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -sOutputFile=out.pdf in1.pdf in2.pdf in3.pdf ...
。 - Nate Kohlpdftk file1.pdf file2.pdf cat output out.pdf
的输出为合并后的文件 out.pdf
。 - jmiserezpdftk
is neat because you can easily select page ranges to merge: pdftk A=file1.pdf B=file2.pdf cat A1-3 B1 output out.pdf
- z0r如果您有多个文件并且不想一个一个地输入名称,那么这是最简单的解决方案:
qpdf --empty --pages *.pdf -- out.pdf
qpdf
的解决方案,但又不想再次浏览文档以弄清楚,谢谢。 - Hashim Azizecho *.pdf | tr ' ' $'\n'
或类似命令来检查顺序! - lmat - Reinstate Monica此外,pdfjoin a.pdf b.pdf
将创建一个新的 b-joined.pdf
,其中包含 a.pdf 和 b.pdf 的内容。
pdfunite
可以合并整个PDF。如果要从file1.pdf中选择第2到第7页和从file2.pdf中选择第1、3、4页,您需要使用pdfseparate
将文件拆分为每页一个PDF,以便提供给pdfunite
。
此时,您可能需要一个具有更多选项的程序。 qpdf
是我找到的最好的操作PDF的工具。 pdftk
更大且速度较慢,而Red Hat / Fedora不会打包它,因为它依赖于gcj。其他PDF实用程序具有Mono或Python依赖项。我发现,将页面组合成30页输出PDF的qpdf
生成的输出文件比使用pdfseparate
和pdfunite
小得多,970kB与1,6450 kB。由于它提供了更多的选项,qpdf
的命令行不像那么简单;可以使用以下命令执行将file1和file2合并的初始请求:
qpdf --empty --pages file1.pdf file2.pdf -- merged.pdf
gcj
,Parabola现在也不再提供pdftk
的安装包。虽然我通过使用pacman -Ss pdf
搜索PDF文件编辑工具,但我错过了这个信息。感谢您的回答!我认为它应该得到更多的赞,这样它就能够出现在suggestions for pdfunite
或者pdftk
旁边。 - k.stmqpdf --collate --empty --pages odd.pdf even.pdf z-1 -- merged.pdf
- caramconvert sub1.pdf sub2.pdf sub3.pdf merged.pdf
convert -compress lossless sub1.pdf sub2.pdf sub3.pdf merged.pdf
进行合并,但生成的文件大小可能会非常大。我建议您改用convert -compress jpeg -quality 90 sub1.pdf sub2.pdf sub3.pdf merged.pdf
命令来进行合并。 - arielnmzgs
(上面列出的所有变体),合并两个PDF文件,一个2MB,另一个500Kb,需要几分钟才能完成,并且结果是一个40MB的文件! pdftools
瞬间完成,文件大小相同。 - supergraApache PDFBox http://pdfbox.apache.org/
PDFMerger 这个应用程序将接受一系列的pdf文档,并将它们合并成一个新的pdf文档。
使用方法:java -jar pdfbox-app-x.y.z.jar PDFMerger "源PDF文件(2..n)" "目标PDF文件"
虽然这不是一个命令行解决方案,但它可能对 macOS
用户有所帮助:
如果需要命令行界面,请使用pdftk, 如果需要图形用户界面,请使用pdfsam, 如果需要Web界面,请使用sejda。
- Clémentconvert
命令行来自于 ImageMagick,它会在执行其他操作之前将 PDF 转换为图像。 - Alexis Wilkepdftk PDF1.pdf PDF2.pdf cat output PDF3.pdf
运行正常。 - Sihat Afnan