应用程序接收的PDF内容不能覆盖整个页面。内容的坐标和尺寸也随数据一起发送。以下是从cropped.png
创建target.pdf
的示例命令,该命令的内容开始于(X:179,Y:212),其大小开始于(W:600,H:400)。
gswin64c -q -sDEVICE=png16m -o "cropped.png" -dNumRenderingThreads=4 -dSAFER -dBATCH -dNOPAUSE -dLastPage=1 -c "<< /PageOffset [-179 -212] /Page >> setpagedevice" -r144 -dTextAlphaBits=4 -dGraphicsAlphaBits=4 -f "target.pdf"
它会创建具有正确偏移量的PNG,但是我找不到定义应该捕获的PDF区域的方法。换句话说,输出必须是仅包含给定框中内容的PNG。
Windows 10上已安装GhostScript V9.22。我也可以使用ImageMagicK。
有没有办法做到这一点?还是我处理方法不正确?任何想法将不胜感激!
谢谢
答案 0 :(得分:1)
您已偏移原点,但未指定介质尺寸,因此介质尺寸将与原始PDF文件中的尺寸相同。
您需要添加-dDEVICEWIDTHPOINTS = 600 -dDEVICEHEIGHTPOINTS = 400 -dFIXEDMEDIA,前提是您指定的媒体大小正确。显然,如果不查看原始空格,我无法分辨出实际的空白!
以144 dpi的分辨率使用-dNumRenderingThreads是没有意义的,实际上,它仅在相当高的分辨率下有用,在这种分辨率下,您只会放慢速度。
此:
-c“ << / PageOffset [-179 -212] / Page >> setpagedevice” -r144 -dTextAlphaBits = 4 -dGraphicsAlphaBits = 4 -f
不正确,我很惊讶它没有引发错误。当您指定-c之后的所有内容,直到-f被视为PostScript。 -r144等无效的PostScript,我希望它会引发错误。您最好将-c“ << / PageOffset [-179 -212] / Page >> setpagedevice” -f移到输入文件名之前。
所以我建议您的命令行应该是:
gswin64c -q -dSAFER -dBATCH -dNOPAUSE -sDEVICE=png16m -o "cropped.png" -dLastPage=1 -r144 -dTextAlphaBits=4 -dGraphicsAlphaBits=4 -dDEVICEWIDHTPOINTS=600 -dDEVICEHEIGHTPOINTS=400 -dFIXEDMEDIA -c "<< /PageOffset [-179 -212] /Page >> setpagedevice" -f "target.pdf"