如何将多个JPG转换为单个多页pdf文件?

如何将多个JPG转换为单个多页pdf文件?,pdf,imagemagick,png,jpeg,Pdf,Imagemagick,Png,Jpeg,我有几个.jpg文件,按顺序从a.jpg到j.jpg命名。我试着简单地将它们连接成一个pdf文件: convert *.jpg output.pdf 但后来我看到其中两幅图像比其他图像略高: $ echo *.jpg | xargs -n1 identify a.jpg JPEG 400x567 400x567+0+0 8-bit DirectClass 15.8KB 0.000u 0:00.000 b.jpg JPEG 400x567 400x567+0+0 8-bit DirectClas

我有几个
.jpg
文件,按顺序从
a.jpg
j.jpg
命名。我试着简单地将它们连接成一个
pdf
文件:

convert *.jpg output.pdf
但后来我看到其中两幅图像比其他图像略高:

$ echo *.jpg | xargs -n1 identify
a.jpg JPEG 400x567 400x567+0+0 8-bit DirectClass 15.8KB 0.000u 0:00.000
b.jpg JPEG 400x567 400x567+0+0 8-bit DirectClass 18.7KB 0.000u 0:00.000
c.jpg JPEG 400x567 400x567+0+0 8-bit DirectClass 33.5KB 0.000u 0:00.000
d.jpg JPEG 400x567 400x567+0+0 8-bit DirectClass 24.2KB 0.000u 0:00.000
e.jpg JPEG 400x751 400x751+0+0 8-bit DirectClass 39.4KB 0.000u 0:00.000
f.jpg JPEG 400x567 400x567+0+0 8-bit DirectClass 31.6KB 0.000u 0:00.000
g.jpg JPEG 400x567 400x567+0+0 8-bit DirectClass 37.1KB 0.000u 0:00.000
h.jpg JPEG 400x567 400x567+0+0 8-bit DirectClass 32KB 0.000u 0:00.000
i.jpg JPEG 400x720 400x720+0+0 8-bit DirectClass 27.6KB 0.000u 0:00.000
j.jpg JPEG 400x567 400x567+0+0 8-bit DirectClass 5.65KB 0.000u 0:00.000
如您所见,
e.jpg
i.jpg
的高度更高。我将所有文件批量转换为相同大小:

for x in {a..j}; do convert $x.jpg -gravity center -background white -extent 400x751 $x.png; done;
$ echo *.png | xargs -n1 identify
a.png PNG 400x751 400x751+0+0 8-bit DirectClass 62.3KB 0.000u 0:00.000
b.png PNG 400x751 400x751+0+0 8-bit DirectClass 74.9KB 0.000u 0:00.000
c.png PNG 400x751 400x751+0+0 8-bit DirectClass 148KB 0.000u 0:00.000
d.png PNG 400x751 400x751+0+0 8-bit DirectClass 85.5KB 0.000u 0:00.000
e.png PNG 400x751 400x751+0+0 8-bit DirectClass 175KB 0.000u 0:00.000
f.png PNG 400x751 400x751+0+0 8-bit DirectClass 124KB 0.000u 0:00.000
g.png PNG 400x751 400x751+0+0 8-bit DirectClass 162KB 0.000u 0:00.000
h.png PNG 400x751 400x751+0+0 8-bit DirectClass 118KB 0.000u 0:00.000
i.png PNG 400x751 400x751+0+0 8-bit DirectClass 113KB 0.000u 0:00.000
j.png PNG 400x751 400x751+0+0 8-bit DirectClass 15.7KB 0.000u 0:00.000
现在,所有生成的
.png
文件都具有相同的大小:

for x in {a..j}; do convert $x.jpg -gravity center -background white -extent 400x751 $x.png; done;
$ echo *.png | xargs -n1 identify
a.png PNG 400x751 400x751+0+0 8-bit DirectClass 62.3KB 0.000u 0:00.000
b.png PNG 400x751 400x751+0+0 8-bit DirectClass 74.9KB 0.000u 0:00.000
c.png PNG 400x751 400x751+0+0 8-bit DirectClass 148KB 0.000u 0:00.000
d.png PNG 400x751 400x751+0+0 8-bit DirectClass 85.5KB 0.000u 0:00.000
e.png PNG 400x751 400x751+0+0 8-bit DirectClass 175KB 0.000u 0:00.000
f.png PNG 400x751 400x751+0+0 8-bit DirectClass 124KB 0.000u 0:00.000
g.png PNG 400x751 400x751+0+0 8-bit DirectClass 162KB 0.000u 0:00.000
h.png PNG 400x751 400x751+0+0 8-bit DirectClass 118KB 0.000u 0:00.000
i.png PNG 400x751 400x751+0+0 8-bit DirectClass 113KB 0.000u 0:00.000
j.png PNG 400x751 400x751+0+0 8-bit DirectClass 15.7KB 0.000u 0:00.000
但是,将它们分批放入
pdf
文件(
convert*.png output.pdf
)仍然会导致这两个页面比其他页面大得多。我做错了什么

编辑:

似乎我找到了解决方案-在组装pdf时,我需要指定
-density
选项:

convert *.png -density 600 output.pdf

但是,我仍然不明白为什么它在最初的尝试中不起作用。

简单地将所有图像逐页添加到文档文件中,并将文档另存为pdf。如果您使用的是Windows,则可以使用Microsoft Word;如果您使用的是Linux,则可以使用Open Office。

我强烈建议使用
img2pdf
Python CLI程序进行无损转换:

用法示例:

img2pdf img1.png img2.jpg -o out.pdf

不,那不好。这只是一个例子——如果我有数百张这样的图片,那么手工完成这一切需要非常长的时间。我需要一种自动方式。