2016-10-12 24 views
0

我有一个具有相同纵横比但不一定相同分辨率的jpeg图像的大集合。我需要将这些文件合并成一个(或多个)pdf文档,每个页面显示多个图像。
我需要指定目标页面大小(a4/letter),我需要精确控制组合图像的最终大小。Linux,将图像合并到精确的平铺的pdf中。 ImageMagick的?另类?

这种情况就像是“合并打印的护照照片列表”。

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

+0

也许如果你提供了2-3张不同分辨率的图像和一个带有插槽的模板,有人可能会帮忙... –

+0

我在问是否会更好的方法以及如何创建这样的模板。作为蒙太奇和转换的替代方法。所以显然我不知道该怎么做。 (至少不是在Linux cmd上,我想避免为这样一个简单的功能编写应用程序。) –

回答

1

我用pdflatex做了一件事情。你可以在Python/Ruby/bash /中编写一个小脚本来查找所有图像文件,然后为每组N个输出LaTeX源代码在页面上放置N个图像。最后,将其转换为pdflatex,并且您将拥有一个嵌入了所有图像的精美PDF文档。它应该少于10行代码,再加上一点样板。

这会将图像以其原始分辨率粘贴,并依靠PDF呈现器将其大小设置为纸张大小。如果某些源图像非常大,则可能会有点浪费。我想你可以使用即时通讯软件或相当的功能,首先将大一点的尺寸缩小一点。

编辑:我做了个小例子。我的乳胶是可怕的,我敢肯定,你可以写的东西好得多:

#!/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文件,并生成图像文件乳胶列出四个,然后:

pdflatex x.tex 
evice x.pdf 

要生成PDF并查看它。

+0

这是一个好主意。我用乳胶写了很多论文和论文,但我没有想到。这将提供更多的控制,并允许非网格布局。我可以创建一个带有固定文件名的模板,而不用为每个页面创建新的源代码,只需运行脚本即可复制和重命名图像。 –

+0

我会将此标记为答案,因为我现在使用胶乳作为解决方案。注意:我不会从脚本创建tex代码。我像Texmaker一样构建.tex模板,然后使用脚本将磁盘或模板中的图像切换出来。这样更复杂的布局是可管理的,模板更容易控制/共享。即使是手动快速肮脏的切换图像也是可能的。对于混合解决方案,可以通过sed运行.tex文件并替换动态部分的标题。 –

0

我发现了一个有点接受的方式与蒙太奇

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

与A4点大小595x842的瓷砖的目标大小可以用百分比来计算起。在这个例子中,它的页面的1/3和一个3x3的网格。
-extent确保稍微缩小的图像将缩放到所需的尺寸。这样网格保持完好,打印可以更容易。
这对裁剪学生证等等是足够好的,但它不像人们想要的那样精确。我会研究乳胶方法,看看如何解决问题。