使用 Ghost 脚本将 PDF 转换为 PNG - 裁剪到页面的顶部三分之一
Posted
技术标签:
【中文标题】使用 Ghost 脚本将 PDF 转换为 PNG - 裁剪到页面的顶部三分之一【英文标题】:PDF to PNG using Ghost Script - crop to top third of page 【发布时间】:2018-07-09 14:28:43 【问题描述】:我正在尝试将 PDF 文件转换为图像,并在此过程中裁剪到第一页顶部的前三分之一(大约)。
这个命令给了我整个页面,如果我把值变小的话,把 -g 选项裁剪到左下角。
对于 (*) 中的 %%x 执行 "......\program\gs\gs9.23\bin\gswin32c.exe" -g2500x3300 -dFIXEDMEDIA -dMaxBitmap=500000000 -dAlignToPixels=0 -dGridFitTT=2 -sDEVICE=pngalpha -dTextAlphaBits=4 -dGraphicsAlphaBits=4 -r300x300 -dBATCH -dNOPAUSE -dFirstPage=1 -dLastPage=1 -SOutputFile="%%~nx.png" "%%~nx.pdf"
我想要较小的图像,以便图像上的 OCR 更快,并且我处理的大多数字母/文档的信息都在前三分之一。
【问题讨论】:
【参考方案1】:PostScript 页面(和 PDF 页面)的原点 (0, 0) 位于左下方。因此,通过减小媒体大小,您可以使内容的最上部远离媒体,因此不会被渲染。
因此,您需要做的是减小媒体的大小(您已经这样做了)**并*翻译原点,以便内容的顶部位于媒体上。
尝试在输入 PDF 文件之前添加 -c "> setpagedevice" -f。这应该将原点转换为 300 dpi 媒体底部下方 1 英寸,这应该使页面顶部多 1 英寸,页面底部少 1 英寸。
显然因为我不知道你的内容有多大,所以我不能给你一个确切的答案。
【讨论】:
非常感谢听起来不错 - 但我有问题 "..\..\..\program\gs\gs9.23\bin\gswin32c.exe" -g1200x3800 -dFIXEDMEDIA -dMaxBitmap=500000000 -dAlignToPixels=0 -dGridFitTT=2 -sDEVICE=pngalpha -dTextAlphaBits=4 -dGraphicsAlphaBits=4 -r350x350 -dBATCH -dNOPAUSE -dFirstPage=1 -dLastPage=1 -c "> setpagedevice " -SOutputFile="Money Laundering.page1.png" "Money Laundering.page1.pdf" GPL Ghostscript 9.23:设备 'pngalpha' 需要输出文件,但未指定文件。错误:/undefinedfilename in --showpage-- 有点奇怪,没有 -c 开关就不需要 -f,但还是谢谢你。这些设置现在很完美...对于 (*.pdf) 中的 %%x 执行 ( echo Converting PDF to image : file %%x "..\..\..\program\gs\gs9.23\bin\ gswin32c.exe" -g2800x800 -dFIXEDMEDIA -dMaxBitmap=500000000 -sDEVICE=pngalpha -dAlignToPixels=0 -dGridFitTT=2 -dTextAlphaBits=4 -dGraphicsAlphaBits=4 -r350x350 -dBATCH -dNOPAUSE -dFirstPage=1 -dLastPage=1 -o "% %~nx.png" -c "> setpagedevice" -f "%%~nx.pdf" -f 和 -c 对于 Ghostscript 来说是独一无二的,因为它们需要成对出现。因为它们之间的内容被视为 PostScript,所以我们需要某种方式来判断 PostScript 何时结束。以上是关于使用 Ghost 脚本将 PDF 转换为 PNG - 裁剪到页面的顶部三分之一的主要内容,如果未能解决你的问题,请参考以下文章
将 RStudio 中的绘图另存为 PNG 或将 PDF 转换为 PNG 后缀