ImageMagick将pdf转换为具有固定宽度或高度的png

时间:2015-10-16 18:38:57

标签: pdf imagemagick imagemagick-convert

我正在使用ImageMagick的转换将PDF文件转换为PNG:

app:showAsAction="collapseActionView"

问题是结果图片的大小根据文件内容而不同。如何为结果图片选择特定的最大高度和最大宽度(以像素为单位)?

1 个答案:

答案 0 :(得分:4)

更新了答案

从你的评论中,我想我现在更清楚你想要什么。所以,我认为你需要的身份是:

Required Resolution       Required Height
-------------------    =  ---------------
Current Resolution        Current Height

但请记住,这适用于X和Y方向。所以,让我们让ImageMagick计算出获得所需输出大小所需的x分辨率和y分辨率 - 使用ImageMagick的fx方法更容易实现它,因为它可行在Windows和Linux上,我碰巧知道你已经安装了ImageMagick,而你可能没有bc或Windows上的任何东西来做数学:

#!/bin/bash
# New width and new height that you want
nh=1000
nw=500

# Calculate Resolution needed in Height
rh=$(identify -format "%[fx:int(($nh*resolution.y)/h)]" doc.pdf)
echo $rh

# Calculate Resolution needed in Width
rw=$(identify -format "%[fx:int(($nw*resolution.x)/w)]" doc.pdf)
echo $rw

因此,如果我在名为doc.pdf的文件中使用它测量595x842,则输出85和60的x和y密度。如果我然后使用

convert -density 85 doc.pdf a.jpg

它出现在702x994 - 接近我想要的高度

如果我使用

convert -density 60 doc.pdf a.jpg

它出现在496x702,接近我想要的500宽度。

在上文中,您可以使用:

identify -format "%[fx:int(($nh*resolution.y)/h)]" doc.pdf

而不是像我一样将结果分配给变量 - 我只是这样做,因为我通常想稍后使用变量。

原始答案

转换后只需在其中添加-resize WIDTHxHEIGHT即可设置所需的尺寸。因此,具体而言,如果您希望它不超过1500x2000,同时保留原始宽高比,请执行:

convert -density 150 file.pdf -quality 100 -resize 1500x2000 res.png

如果你想要的宽度不超过800px,并且不在乎高度,请执行以下操作:

convert -density 150 file.pdf -quality 100 -resize 800x res.png

如果您希望它不超过1000像素高,并且不关心宽度,请执行以下操作:

convert -density 150 file.pdf -quality 100 -resize x1000 res.png

如果您喜欢" Hall of Mirrors" 效果,并希望1200x1800可能出现,并且要考虑宽高比,请执行以下操作:

convert -density 150 file.pdf -quality 100 -resize 1200x1800! res.png