11

我一直在使用 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实际上甚至也没有)。

4

3 回答 3

8

我有完全相同的问题。-dUseArtBox我通过添加开关来修复它。

例子:

 /usr/bin/gs -dUseArtBox -dNOPAUSE -sDEVICE=pngalpha -sOutputFile=output.png input.pdf

注意: 从 ghostscript 版本 9.07 开始-dUseArtBox支持 switch

-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.

于 2014-01-04T01:41:05.467 回答
7

有多种选项可以控制哪些“媒体大小”Ghostscript 呈现给定的输入:

-dPDFFitPage
-dUseTrimBox
-dUseCropBox

使用 PDFFitPage Ghostscript 将呈现到当前页面设备大小(通常是默认页面大小)。使用 UseTrimBox 它将使用 TrimBox(同时它将 PageSize 设置为该值)。使用 UseCropBox 它将使用 CropBox(同时它将 PageSize 设置为该值)。默认情况下(不提供参数),Ghostscript 将使用 MediaBox 进行渲染。

对于您的示例,看起来添加"-dUseCropBox"将完成您期望的工作。

请注意,您还可以通过使用"-sPAPERSIZE"(在 Ghostscript 知道的所有预定义值中选择)或(为了更灵活)使用来控制输出的整体大小"-dDEVICEWIDTHPOINTS=NNN -dDEVICEHEIGHTPOINTS=NNN"

于 2010-06-05T17:30:26.967 回答
0

您是否尝试过使用 pdftex(例如附带 texlive)或(尚未尝试)python 脚本pdfcrop 使用pdfcrop

我使用提到的第一个工具有类似的工作流程。

于 2010-04-17T14:01:06.973 回答