Imagemagick:在读取时将PDF格式化为设定的分辨率

hen*_*ald 3 pdf imagemagick

我想生成固定宽度的PDF缩略图(548px宽,高度由PDF页面宽高比决定).使用ImageMagick,我可以使用以下命令执行此操作:

$ convert -density 300 -resize 548x input.pdf thumbnail.png
Run Code Online (Sandbox Code Playgroud)

这适用于任意大小的PDF,但PDF越大,所需的时间越长.从文档中我了解到这是因为ImageMagick首先必须读取PDF并对其进行光栅化(以300 DPI为单位),然后再缩小它.这显然需要更长的时间和更多的内存,PDF越大.

我的问题是:在缩小PDF并输出PDF之前,我们能否告诉ImageMagick将PDF格式化为设定的分辨率(比缩略图需要的大2或3倍)?这应该允许我们的转换在大致相同的时间内运行,而不管PDF大小.

我们可以通过首先读取PDF分辨率然后计算适当的DPI以生成合适大小的光栅化PDF来手动完成,但这看起来有点像黑客,我希望像ImageMagick内置这样的东西.

dle*_*tra 9

目前版本的ImageMagick(6.8.8-7)无法实现这一点.我们在此处找到了您的帖子,并添加了ImageMagick(6.8.8-8)中提供的以下功能:

您可以使用以下命令将PDF缩放为548像素的宽度:

$ convert -define psd:fit-page=548x input.pdf thumbnail.png
Run Code Online (Sandbox Code Playgroud)

如果使用其他DPI创建的图像不是默认值(72 DPI),则必须在之后调整其大小:

$ convert -density 300 -define psd:fit-page=548x input.pdf -resize 548x thumbnail.png
Run Code Online (Sandbox Code Playgroud)

  • 谢谢,这是一个惊人的回应 (2认同)