如何从一系列图像生成 PDF?

zra*_*ajm 10 pdf shell printing command-line

我有一系列图像(实际上是扫描的书),我想将它们制作成 A4 格式的 PDF。

我这样做的原因:我正在帮助另一个国家的计算机知识较少的人获得这本书的印刷本。我知道他们有打印 PDF 的能力,但我不想经历弄清楚并试图解释如何调整大小和打印一系列图像的麻烦。– 我只想通过电子邮件向他们发送一些他们可以毫不费力地扔到打印机上的东西。

zra*_*ajm 8

我找到了一个使用 ImageMagick 的解决方案,但我花了一段时间才弄清楚我必须使用该选项-page A4来生成 A4 格式的 PDF。最后,这个简单的命令对我有用:

convert *.gif -page A4 book.pdf
Run Code Online (Sandbox Code Playgroud)

故障排除

在谷歌搜索答案时,我意识到其他人也尝试过这个,并遇到了我从未见过的问题。这些提示可能对你们中的一些人有所帮助。

不同尺寸的图像如果您的图像尺寸不同,请查看此 YouTube 视频:“如何使用 imagemagick 将多张图像转换为 A4 pdf”。视频中的那个人使用命令(他说产生 A4 输出):

convert *.jpg -resize 595x842 -gravity center -background white \
    -extent 595x842 resultimage.pdf
Run Code Online (Sandbox Code Playgroud)

后缀

这个问题已在 stackoverflow 上提出,但已作为题外话关闭(“如何在 linux 上从命令行将一系列图像转换为 PDF?”)。因为这给了我一个提示,但不是我在这里创建(并回答)这个问题的完整解决方案,希望其他人也能发现它有用。


小智 8

使用img2pdf

img2pdf --pagesize A4 file1.jpg file2.jpg > book.pdf
Run Code Online (Sandbox Code Playgroud)

从它的描述来看:

无损地将光栅图像转换为 PDF,无需重新编码 JPEG 和 JPEG2000 图像。这导致 JPEG 和 JPEG2000 图像的无损转换,唯一增加的文件大小来自 PDF 容器本身。

另一方面,ImageMagick 将解码和重新编码 JPEG 数据,导致生成损失和性能比 img2pdf 差 10-100。