Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/heroku/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
裁剪PDF并使用GhostScript创建PNG_Pdf_Imagemagick_Png_Ghostscript - Fatal编程技术网

裁剪PDF并使用GhostScript创建PNG

裁剪PDF并使用GhostScript创建PNG,pdf,imagemagick,png,ghostscript,Pdf,Imagemagick,Png,Ghostscript,应用程序接收的PDF内容不覆盖整个页面。内容的坐标和尺寸也随数据一起发送。下面是从target.pdf创建craped.png的示例命令,其中内容开始(X:179,Y:212)和大小(W:600,H:400) gswin64c-q-sDEVICE=png16m-o“crapped.png”-dNumRenderingThreads=4-dSAFER-dBATCH-dNOPAUSE-dLastPage=1-c“>setpagedevice”-r144-dTextAlphaBits=4-dGraph

应用程序接收的PDF内容不覆盖整个页面。内容的坐标和尺寸也随数据一起发送。下面是从
target.pdf
创建
craped.png
的示例命令,其中内容开始(X:179,Y:212)和大小(W:600,H:400)

gswin64c-q-sDEVICE=png16m-o“crapped.png”-dNumRenderingThreads=4-dSAFER-dBATCH-dNOPAUSE-dLastPage=1-c“>setpagedevice”-r144-dTextAlphaBits=4-dGraphicsAlphaBits=4-f“target.pdf”
它创建了具有正确偏移量的PNG,但是我找不到一种方法来定义应该捕获的PDF区域。换句话说,输出必须是仅包含给定框中内容的PNG

GhostScript V9.22安装在Windows 10上。我也有ImageMagicK供我使用

有没有办法做到这一点?还是我处理得不对?任何想法都将不胜感激


谢谢

您已经偏移了原点,但尚未指定媒体大小,因此媒体大小将与原始PDF文件中的大小相同

假设给定的媒体大小正确,则需要添加-dDEVICEWIDTHPOINTS=600-dDEVICEHEIGHTPOINTS=400-dFIXEDMEDIA。很明显,如果没有看到原稿,我就无法知道实际的空白在哪里

在144 dpi时,使用-dNumRenderingThreads是没有意义的,实际上,它只在相当高的分辨率下有用,在这个分辨率下,你只会减慢它的速度

这:

-c“>setpagedevice”-r144-dTextAlphaBits=4-dGraphicsAlphaBits=4-f

是不正确的,我很惊讶它没有抛出错误。当您指定-c之后的所有内容,直到-f被视为PostScript。-r144等不是有效的PostScript,我希望它会抛出一个错误。最好将-c“>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"
gswin64c-q-dSAFER-dBATCH-dNOPAUSE-sDEVICE=png16m-o“cropped.png”>dLastPage=1-r144-dTextAlphaBits=4-dGraphicsAlphaBits=4-dDEVICEWIDHTPOINTS=600-ddeviceheighttpoints=400-dfiexedmedia-c“>setpagedevice”>f“target.pdf”

我确实尝试使用-dDEVICEWIDHTPOINTS标志,但对我无效。也许我试错了。我会试试你的方法。现在,我最终使用了Magick.Net,它就像一个魔咒。谢谢你的回复!您需要设置-dFIXEDMEDIA以及宽度和高度,否则PDF解释器会将媒体大小重置为PDF文件中的大小。如果不行,我需要看看你的PDF文件。
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"