多个pdf文件拼接或合并为单一文件,偶尔会有这样的需求。
有时候是收到一大堆pdf,要打印。一个个打开,再一个个打印,需要坐那儿半天看着和操作,不够优雅。有时候是有一大堆pdf,要结集再发送给别人。
方法1 ImageMagick
ImageMagick https://imagemagick.org/ 有个工具convert,适合做各种格式转换,也可以用于拼接PDF文件。
用法如下,命令行:
c:\tools\ImageMagick\convert.exe -density 300 1.pdf 2.pdf 3.pdf 4.pdf output.pdf
其中
(1)c:\tools\ImageMagick\convert.exe 是在我机器上的路径和可执行程序;
(2)-density 300 是打印的分辨率,每英寸300像素;
(3)1.pdf 2.pdf 3.pdf 4.pdf 是输入的待合并的多个 pdf 文件;
(4)output.pdf,最后一个参数,是输出的单一文件,合并的结果。
这个方法的缺点不少。速度慢,需要几分钟。生成的文件大,比待合并的多个文件尺寸之和大不少,几倍几十倍都有可能。 即使输入文件中的文字可以选择,输出的文件中的文字也不能选择,像纯图片生成的。这也是尺寸变大和速度慢的原因吧。
这一方法的更多细节可以看这里 https://blog.csdn.net/u013919171/article/details/113520520。
方法2 GhostScript
另一个方法速度更快,生成文件更小,文字可选。使用工具是 GhostScript,简称gs,在https://www.ghostscript.com/ 下载。
用法如下,命令行:
"C:\Program Files\gs\gs9.55.0\bin\gswin64c.exe" -dBATCH -dNOPAUSE -q -sDEVICE=pdfwrite -sOutputFile=output.pdf 1.pdf 2.pdf 3.pdf 4.pdf
其中
(1)"C:\Program Files\gs\gs9.55.0\bin\gswin64c.exe" 在我机器上的路径和可执行程序;
(2)-dBATCH -dNOPAUSE -q -sDEVICE=pdfwrite 原样照抄,我没有细看;
(3)-sOutputFile=output.pdf 是输出的单一文件,合并的结果;
(4)后面的所有参数1.pdf 2.pdf 3.pdf 4.pdf是输入的待合并的多个 pdf 文件。
更多细节参见这里
https://superuser.com/questions/54041/how-to-merge-pdfs-using-imagemagick-resolution-problem。
补充
如果要打印的是多个word,又或者这些word需要A3纸,而我没有这么大的纸。在这种情况下,我把这些word分别打印到pdf文件。此时不需要缩放,只需要注意不超出边界。打印得到的多个pdf文件拼接/合并为一个pdf文件,打印这个单一pdf文件到打印机时缩放到A4纸。