ImageMagick:将图像转换为A4页面大小的PDF,并使图像适合页面

66

我想将不同的图像格式(如bmp、jpg、gif、png、tiff-包括多页)转换为PDF格式,并使用A4页面大小和适合页面的图像(必要时调整大小)。图像应位于页面中央,我希望定义一个偏移量。

我尝试了下面的代码,但顶部没有偏移量,图像质量真的很差。

convert png.png -gravity North -resize 500x500 -quality 100 -page a4x5x5 myout.pdf

有没有办法做到这一点?

提前感谢任何帮助, Mariusz


ImageMagick没有a4x5x5的页面大小。请使用-resize 595 x 842 ... -extent 595 x 842。 - fmw42
5个回答

71
如果您想保留原始分辨率(无损),可以尝试以下命令:

如果你希望保持原始分辨率(lossless),你可以尝试以下命令:

convert png.png -background white -page a4 myoutput.pdf

根据之前发表的评论:https://dev59.com/JGAg5IYBdhLWcg3wwtRp#24573341

@m4tx 只有当图片的分辨率大于500x800px时,该命令才有意义,它不会缩放以避免产生像素化的缩略图。


1
抱歉,我今天再次检查了一下,现在它似乎可以工作了。我不知道出了什么问题,我甚至使用了来自shell历史记录的完全相同的命令。不幸的是,我无法撤回投票,因为现在已经锁定了。 - ziggystar
7
看起来它实际上并没有将小图像升级以适应整个页面。 - m4tx
3
为避免打印“真实尺寸”时的任何问题,您需要指定“-density”。 - Wok
使用这个,我得到的图像是风景而不是原始的肖像。 - Wakan Tanka
2
@Wok 使用“-density 72”参数,我得到的图像比A4纸小。如果我去掉它,那么它的大小就是正确的,即与A4纸相同。 - Kubuntuer82

23
您可以使用ImageMagick将其转换为pdf。
convert png.png myout.pdf

使用pdfjam而不是ImageMagick来调整页面大小

pdfjam --paper a4paper --outfile myoutA4.pdf myout.pdf

pdfjam提供其他选项,可能更适合您的需求。


3
谢谢,这是唯一对我有用的解决方案。将彩色tiff文件转换为pdf时,我必须使用pdfjam来修复图像大小为A4页面大小。 - Floyd

20

在StackOverflow上找到了这个:

convert *.jpg -resize 1240x1753 \
                      -extent 1240x1753 -gravity center \
                      -units PixelsPerInch -density 150x150 multipage.pdf

5
-gravity 应该放在 -extent 前面。 - fmw42
1
谢谢。正是我一直在寻找的! - Abbas
1
这正是我所需要的——谢谢! - jckdnk111
@fmw42 这不重要。 - nomadSK25
在Imagemagick 6中可能不会出现问题,但在Imagemagick 7中会有问题。正确的语法就像我提到的那样,但是Imagemagick 6相对宽容一些。Imagemagick 7更加严格地遵循正确的语法。 - fmw42
1
不幸的是,这将修改图像本身(在它们周围添加一些白色像素)。我想要的是将图像(调整大小或不调整)添加到PDF的A4页面中,而无需使用白色放大某些图像。 - Totor

14
感谢ImageMagick支持论坛,我找到了解决方案:
convert image.tif -resize 575x823^> -gravity center -background white -extent 595x842 image.pdf

如果出现错误,请尝试:
convert image.tif -resize 595x842^\> -gravity center -background white -extent 595x842 image.pdf

3
你可以这样避免大于号的影响:-resize 575x823^> - chikamichi
21
一个谷歌搜索把我带到这里,因为这个主题的标题相当通用。对于简单的用途,选项“-page a4”已经可以自动完成很好的工作:convert file-pattern*.jpg -page a4 output.pdf - fedelibre
4
如果图像较小,您想要调整其大小,请使用“-page 'A4<'”。 - domen

5
您需要指定密度:
convert -density 80 -page a4 input_A.jpg input_B.jpg output.pdf

否则,在选择“实际大小”而不是“适合大小”进行打印时可能会出现问题。我曾经使用过一台公共打印机,无法选择“适合大小”,只能选择“实际大小”,在这种情况下,打印出的页面只有我想要打印的页面的一部分。 适合大小 vs 实际大小

如果您定义了“-page a4”,它会缩小图像以适应A4-PDF。如果您按原始大小打印,则纸张为A4,与密度无关。如果您想在不同的尺寸上打印它,您既不应该使用fit也不应该使用-density,而应该更改-page ....。 - JoKalliauer
不,如果您不指定密度,即使您指定A4页面,页面的相关部分也不一定是A4大小,它可能是A4页面中间的一个小矩形。尝试使用“实际大小”而不是“适合”进行打印,您就会看到。我知道,我已经这样做了,而且我没有搞乱除A4以外的格式。用相机拍照,然后将其转换为PDF。 - Wok
我认为问题在于JoKalliauer只谈论页面格式(确实是A4纸),而我谈论的是页面内容(这意味着我希望图片的内容按预期填满A4纸)。 - Wok

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接