使用GhostScript从PDF设置转换的Jpeg的自动高度/宽度

Cha*_*Kee 7 pdf jpeg ghostscript

我正在使用GS进行从PDF到JPEG的转换,以下是我使用的命令:

gs -sDEVICE=jpeg -dNOPAUSE -dBATCH -g500x300 -dPDFFitPage -sOutputFile=image.jpg image.pdf
Run Code Online (Sandbox Code Playgroud)

在此命令中,您可以看到-g500x300设置转换后的图像大小(宽度x高度).

有没有办法只需设置宽度而不必输入高度,那么它将基于宽度来使用其原始宽高比来缩放高度?我知道它可以通过使用ImageMagick转换来实现,你只需要放置0高度参数即-resize 500x0.我尝试使用GhostScript,但我不认为这是正确的方法.

我决定不使用ImageMagick转换原因,因为它在转换大尺寸多页PDF时非常慢.

谢谢您的帮助!

Pin*_*nyM 5

这篇文章解释了为什么ghostscript更快 - https://serverfault.com/questions/167573/fast-pdf-to-jpg-conversion-on-linux-wanted,解决它的唯一解决方法是修改imagemagick代码.

不幸的是,ghostscript不支持自动确定的输出大小.这主要是因为使用的-g选项实际上是确定将保存渲染输出的设备大小,而不是渲染输出本身.由于-dPDFFitPage交换机尝试匹配设备大小,因此输出大小正在发生变化.虽然你可以只使用jpeg'设备'的高度来定义-dDEVICEHEIGHT=n,但这会使设备宽度保持不变.

虽然有点繁琐的解决方法,但您可以使用ghostscript或imagemagick来获取pdf页面的宽度和高度.要使用ghostscript执行此操作,请参阅使用GhostScript获取页面大小的答案.然后,您可以计算适当的宽度以设置-g标志以保持纵横比.如果你可以找出一套完成所有这些命令的奖励积分:)