【问题标题】:Obey the MediaBox/CropBox in PDF when using Ghostscript to render a PDF to a PNG使用 Ghostscript 将 PDF 呈现为 PNG 时,请遵守 PDF 中的 MediaBox/CropBox
【发布时间】:2011-02-09 02:10:44
【问题描述】:

我一直在使用 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)。

【问题讨论】:

  • 谢谢!据我所知,这使用了一种迂回的方法,即写出 jpeg 或类似文件,扫描边距,然后以设置的边距重新运行。我想要使​​用的裁剪信息已经在 PDF 本身中(见鬼,Acrobat 会自动检测它)。我不禁想知道我是否可以做一些疯狂的事情,比如将 PDF 转换为 PS,然后从那里提取边界框。 :-)

标签: pdf png crop ghostscript


【解决方案1】:

我遇到了完全相同的问题。我通过添加-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.

【讨论】:

    【解决方案2】:

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

    -dPDFFitPage
    -dUseTrimBox
    -dUseCropBox

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

    对于您的示例,添加 "-dUseCropBox" 似乎可以完成您期望的工作。

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

    【讨论】:

      【解决方案3】:

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2014-04-18
        • 2013-12-27
        • 2010-11-01
        • 2011-09-08
        • 1970-01-01
        • 2016-03-11
        • 2010-10-27
        相关资源
        最近更新 更多