我使用Ghostscript将JPEG转换为PDF:
gs -sDEVICE=pdfwrite -o d.pdf viewjpeg.ps -c "(Imgp3826.Jpeg) viewJPEG showpage
这将创建具有默认页面大小和图像的PDF,位于左下角。 我需要修改脚本以创建具有正确尺寸的页面。
本说明中的:https://stackoverflow.com/a/6508854/907576
他们使用 ImageMagick 执行此操作,但我无法使用它 - 我只能使用 Ghostscript 。
是否可以从viewjpeg.ps
获取宽度 - 高度值并将其设置为页面大小?
我在viewjpeg.ps
中看到了:
/height NextByte 8 bitshift NextByte add def
/width NextByte 8 bitshift NextByte add def
看起来他们使用JPEG标头来阅读此信息。
我可以将其重复用于<</PageSize [${dimension}]>>
吗?
答案 0 :(得分:2)
您不能将这些数字直接用作/ PageSize的参数,因为它们是图像的高度和宽度(在图像样本中),而PageSize的参数是PostScript单位(1/72英寸)。
但是,您可以按当前分辨率缩放它们并使用缩放的数字。
(宽度/分辨率)* 72和(高度/分辨率)* 72应该完成这项工作。
所以:
currentpagedevice /HWResolution get aload
height exch div 72 mul
exch width exch div 72 mul
exch 2 array 3 1 roll astore
<< /PageSize 3 -1 roll >> setpagedevice
警告:我没有时间真正尝试这个......
答案 1 :(得分:2)
FWIW,由于viewJPEG过程的编写方式,上面列出的简单加法不会单独工作。
我建议用另一个程序扩充viewjpeg.ps:
/viewJPEGgetsize { % <file|string> ==> width height
save
JPEGdict begin
/saved exch def
/scratch 1 string def
dup type /stringtype eq { (r) file } if
/F exch def
readJPEGmarkers begin
width height
saved end restore
} bind def
然后你可以这样称呼它:
gs -I../lib -sDEVICE=pdfwrite \
-o stuff.pdf viewjpeg.ps \
-c "(image.jpg) <</PageSize 2 index viewJPEGgetsize 2 array astore>> setpagedevice viewJPEG"
答案 2 :(得分:0)
gs -sDEVICE=pdfwrite -o /pathTo/newPdf.pdf "/pathTo/viewjpeg.ps" -c "(/pathTo/jpgToPdf.JPG) << /PageSize [400 300] >> setpagedevice viewJPEG"