使用 ImageMagick 将多个 PNG 组合成单个 PDF

The*_*olf 2 pdf imagemagick

我有许多相同大小的 PNG 文件,我想将它们转换为单个 PDF,将 3 个 PNG 图像转换为 A4 页面(例如 30 个图像 = 1 x 10 页 PDF)。

图像都是 1311 x 537 像素,我想将它们 3 堆叠到 A4 页面上。文件名没有方案,但我不介意它们在 PDF 中出现的顺序。

任何人都可以建议使用 ImageMagick(在 Windows 10 上)实现这一目标的最佳方法吗?

Mar*_*ell 8

在最基本的情况下,无需任何 Powershell 或 BATCH 命令,您可以将 3 个图像一个一个地堆叠在一起,没有空格并像这样调整为 A4 页面的大小:

convert image1.jpg image2.jpg image3.jpg -append -resize 2480x3508 page-01.png
convert image4.jpg image5.jpg image6.jpg -append -resize 2480x3508 page-02.png
...
...
Run Code Online (Sandbox Code Playgroud)

然后将所有页面组合成一个 PDF,如下所示:

convert page-* result.pdf
Run Code Online (Sandbox Code Playgroud)

如果您有更多的时间和耐心,您可以将图像隔开一点,或自动化该过程,但这可能不值得付出努力。

如果您想将图像间隔 10 个像素,您可以在它们之间创建透明间隔,如下所示:

convert -background none -size 10x10 image1.png xc:none image2.png xc:none image3.png -append -resize 2480x3508 page-01.png
Run Code Online (Sandbox Code Playgroud)

如果更多的 Windows-y ( TM ) 人看到这个,并想转换,你可以在 Linux/Unix 上这样做:

生成一个文件,其中包含您想要的 PDF 中的所有文件名,3 到一行:

ls image*.jpg | xargs -n3 > files.txt
Run Code Online (Sandbox Code Playgroud)

这使:

i-1.png i-10.png i-11.png
i-12.png i-13.png i-14.png
i-15.png i-16.png i-17.png
i-18.png i-19.png i-2.png
i-20.png i-21.png i-22.png
i-23.png i-24.png i-25.png
i-26.png i-27.png i-28.png
i-29.png i-3.png i-30.png
i-4.png i-5.png i-6.png
i-7.png i-8.png i-9.png
Run Code Online (Sandbox Code Playgroud)

我想你会DIR /B | something在 Windows 上使用它。

然后逐行阅读该文件并制作一页 A4 将其发送到stdout最终convert组装成 PDF:

while read names ; do
   convert $names -append -resize 2470x3500 +repage miff:-
done < files.txt | convert miff:- result.pdf
Run Code Online (Sandbox Code Playgroud)

我想你会FOR /F ...在 Windows 上这样做,就像这样一团糟:

FOR /F %%G IN (files.txt) DO (
   convert %%G -append -resize 2470x3500 +repage miff:-
) | convert miff:- result.pdf
Run Code Online (Sandbox Code Playgroud)