我一直在使用Ghostscript将我用PDF格式呈现的单个图转换为PNG:
gswin32c -sDEVICE=png16m -r300x300 -sOutputFile=junk.png ^
-dBATCH -dNOPAUSE Figure_001-a.pdf
这是有效的,我得到一个PNG,它包含情节。
但它也包含大量的空白区域(示例源图像:http://cdsweb.cern.ch/record/1258681/files/Figure_001-a.pdf)。
如果您在Acrobat中查看它,您会注意到绘图周围没有空白区域。如果使用上面的命令行,你会发现该图只占空间的1/3左右。
当对EPS文件做同样的事情时,我遇到了同样的问题。但是,有一个命令行参数-dEPSCrop
,可以传递给PS渲染引擎来关注BoundingBox。
我需要类似的参数来渲染PDF。我无法在文档中找到它(实际上甚至都不是-dEPSCrop
)。
答案 0 :(得分:8)
我有完全相同的问题。我通过添加-dUseArtBox
开关来修复它。
示例:
/usr/bin/gs -dUseArtBox -dNOPAUSE -sDEVICE=pngalpha -sOutputFile=output.png input.pdf
注意:支持-dUseArtBox
切换since ghostscript version 9.07
-dUseArtBox
Sets the page size to the ArtBox rather than the MediaBox. The art box defines the extent of the page's meaningful content (including potential white space) as intended by the page's creator. The art box is likely to be the smallest box. It can be useful when one wants to crop the page as much as possible without losing the content.
答案 1 :(得分:5)
有多种选项可以控制“媒体大小”Ghostscript呈现给定输入:
-dPDFFitPage
-dUseTrimBox
-dUseCropBox
使用PDFFitPage Ghostscript将呈现当前页面设备大小(通常是默认页面大小)。 使用UseTrimBox,它将使用TrimBox(它将同时将PageSize设置为该值)。 使用UseCropBox,它将使用CropBox(它将同时将PageSize设置为该值)。 默认情况下(不提供参数),Ghostscript将使用MediaBox进行渲染。
对于您的示例,添加"-dUseCropBox"
似乎可以完成您期望的工作。
注意,您还可以使用"-sPAPERSIZE"
(在Ghostscript知道的所有预定义值中选择)或(为了更加灵活)使用"-dDEVICEWIDTHPOINTS=NNN -dDEVICEHEIGHTPOINTS=NNN"
来控制输出的整体大小。
答案 2 :(得分:0)