使用Imagemagick将.jpg图像置于PDF中心?

sda*_*aau 7 pdf jpeg center imagemagick

我正在使用convert版本ImageMagick 6.6.2-6 2011-03-16,我想用它从图像生成A4 pdf,其中图像将是非缩放和居中的.

我正在运行以下内容(作为使用ImageMagick覆盖图像的修改):

# generate a 100x100 JPG with just red color
convert -size 100x100 xc:red red.jpg

# generate PDF from JPG
convert -page A4 xc:white red.jpg -gravity center -composite -format pdf out.pdf
Run Code Online (Sandbox Code Playgroud)

......但是,基本上什么都没显示?png图像也是如此......

注意

  • 只是' convert -page A4 red.jpg out.pdf'有效 - 但图像没有居中; (-gravity center导致图像无法显示)
  • 如果图像是png,' convert -page A4 -gravity center red.png out.pdf'确实可以正常工作

...但是,我想convert直接嵌入JPEG流的内容 - 因此,我不想先将JPG转换为PNG.

那么,是否可以convert直接将JPG图像置于A4 PDF页面中?

非常感谢任何答案,
干杯!

 

EDIT2:@John Keyes的答案适用于上面的例子; 图像比PDF大小"更小" - 但是如果图像更大,例如:

$ convert -size 1228x1706 -background \#f44 -rotate 45 gradient:\#f00-\#fff red.jpg
$ identify red.jpg 
red.jpg JPEG 2075x2075 2075x2075+0+0 8-bit DirectClass 120KB 0.000u 0:00.000
Run Code Online (Sandbox Code Playgroud)

......那么它会失败.然而,事实证明:" 如果你改变-extent到50×50,然后用-gravity玩,你会看到变化 " -除了,问题是:你改变的程度,该图像的-或者说最终的PDF?

好吧,事实证明 - 它是最终PDF的范围......要找到它的大小convert,请检查页面:Magick :: Geometry - 但是,请注意"Postscript页面大小规范",如" A4+43+43>"不幸,导致convert在此上下文中崩溃...但至少可以从页面复制大小(595x842)的相应数字; 最后这个工作:

convert -page A4 -gravity center -resize 595x842 -extent 595x842 red.jpg out.pdf
Run Code Online (Sandbox Code Playgroud)

......实际上,-extent部件并不是真正需要的 - -resize部件是重要的一部分,可以显示大图像.

但是,这里的问题是所包含的图像似乎是重新采样的 - 但是,我只是想显示缩放以使其适合页面,但是否则会将原始JPG流插入文件中..所以我猜猜问题仍然是部分开放的:)

编辑:相关:

Joh*_*yes 5

以下非常适合我:

convert -page A4 red.jpg  -gravity center -format pdf out.pdf
Run Code Online (Sandbox Code Playgroud)

如果您更改“文件”的顺序,它也可以工作:

convert -page A4 red.jpg xc:white -gravity center -composite -format pdf out.pdf
Run Code Online (Sandbox Code Playgroud)

我认为 red.jpg 居中,但白色绘制在它上面。

  • 这不适用于大图像(版本 6.9.2),在我的情况下转换 5 MB JPEG。它只是产生一个空白页。如果没有“重心”选项,它可以工作,但当然不会居中。似乎是一个悬而未决的问题:https://www.imagemagick.org/discourse-server/viewtopic.php?t=22759 (3认同)