我想生成固定宽度的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内置这样的东西.
目前版本的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)