Linux,将图像合并为精确缩放的平铺 pdf。图像魔术?选择?

Linux, combine images to precise scaled tiled pdf. Imagemagick? Alternative?

我有大量具有相同纵横比但不一定具有相同分辨率的 jpeg 图片。我需要将它们组合成一个(或多个)pdf 文档,每页显示多个图像。
我需要指定目标页面大小 (a4/letter),并且需要精确控制组合图像的最终大小。

场景类似于"combining a list of passport photos for print"。

我试过 Imagemagick 的蒙太奇,但无法完成缩放。如果所有图像的分辨率完全相同,我可以尝试找到一些巫毒数字并使其以某种方式工作。
也许 imagemagick 是错误的方法?有没有一种方法可以使用 x:y "slots" 创建一个 pdf 模板,该模板已经具有正确的打印尺寸,然后 "feed" 将图像放入这些插槽中?

我用 pdflatex 做过类似的事情。您在 Python/Ruby/bash/whatever 中编写了一个小脚本来遍历您的目录以查找所有图像文件,然后对于每组 N 个图像,输出 LaTeX 源代码,将 N 个图像布置在一页上。最后,将其通过管道传输到 pdflatex 中,您将拥有一个嵌入了所有图像的精美 PDF 文档。它应该少于 10 行代码,再加上一点样板文件。

这将以原始分辨率粘贴图像,并依靠 PDF 渲染器将它们调整到纸张大小。如果一些源图像非常大,可能会有点浪费。我想您可以先使用 IM 或等效工具将较大的尺寸缩小一点。

编辑: 我做了一个小例子。我的乳胶很糟糕,我相信你可以写出更好的东西:

#!/usr/bin/ruby

puts <<HEADER
\documentclass[a4paper]{article}
\usepackage{relsize}
\usepackage[pdftex]{graphicx,color}
\begin{document}
HEADER

ARGV.each_slice(4).to_a.each do |images|
    puts "\begin{center}"
    puts "\thispagestyle{empty}"
    images.each {|filename| puts "\includegraphics[width=2in]{#{filename}}"}
    puts "\end{center}"
    puts "\newpage"
end

puts <<FOOTER
\end{document}
FOOTER

运行 类似:

./layout.rb x/* > x.tex

要扫描目录 x/ 以查找 jpg 文件并生成包含四个图像的 latex 文件,然后:

pdflatex x.tex
evice x.pdf

生成 PDF 并查看。

我找到了一种可以接受的蒙太奇方式

montage -geometry +0+0 ../*.jpg +compress -resize 198x280 -extent 198x280 -tile 3x3 -gravity center -page a4 test.pdf

从 4 磅尺寸 595x842 开始,瓷砖的目标尺寸可以按百分比计算。在示例中,它占页面的 1/3 和一个 3x3 网格。
-extent 确保将稍小的图像缩放到所需的大小。通过这种方式,网格可以保持完整并且可以更轻松地切割印刷品。
它足以切割学生证等。但它并不像人们想要的那样精确,以获得好的印刷品。我将研究乳胶方法,看看效果如何。