使用Ghostscript将PDF呈现为PNG时,请遵守PDF中的MediaBox/CropBox

使用Ghostscript将PDF呈现为PNG时,请遵守PDF中的MediaBox/CropBox,pdf,png,crop,ghostscript,Pdf,Png,Crop,Ghostscript,我一直在使用Ghostscript将以PDF格式呈现的单个图形图转换为PNG: gswin32c -sDEVICE=png16m -r300x300 -sOutputFile=junk.png ^ -dBATCH -dNOPAUSE Figure_001-a.pdf 从某种意义上说,我得到了一个PNG,它包含了绘图 但它包含大量的空白以及一个示例源图像: 如果在Acrobat中查看,您会注意到绘图周围没有空白。如果使用上面的命令行,您会发现绘图仅占空间的1/3左右 当对EPS

我一直在使用Ghostscript将以PDF格式呈现的单个图形图转换为PNG:

gswin32c -sDEVICE=png16m -r300x300 -sOutputFile=junk.png ^
         -dBATCH -dNOPAUSE Figure_001-a.pdf
从某种意义上说,我得到了一个PNG,它包含了绘图

但它包含大量的空白以及一个示例源图像:

如果在Acrobat中查看,您会注意到绘图周围没有空白。如果使用上面的命令行,您会发现绘图仅占空间的1/3左右

当对EPS文件执行相同的操作时,我遇到了相同的问题。但是,可以通过命令行参数dEPSCrop让PS渲染引擎注意边界框

我需要类似的参数来渲染PDF。实际上,我在文档中甚至在-dEPSCrop中都找不到它。

您是否尝试过使用texlive附带的pdftex,或者尚未尝试使用python脚本


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

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

-dPDFFitPage -杜塞特里姆博克斯 -双色盒

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

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


注意,您还可以通过在Ghostscript知道的所有预定义值中使用-spPersize select来控制输出的总体大小,或者为了更灵活地使用-dDEVICEWIDTHPOINTS=NNN-ddevicehightpoints=NNN。

我也遇到了同样的问题。我通过添加-dUseArtBox开关来修复它

例如:

 /usr/bin/gs -dUseArtBox -dNOPAUSE -sDEVICE=pngalpha -sOutputFile=output.png input.pdf
注意:-支持dUseArtBox开关

-dUseArtBox
将页面大小设置为ArtBox而不是MediaBox。“艺术框”定义页面有意义内容的范围,包括页面创建者预期的潜在空白。艺术盒可能是最小的盒子。如果希望在不丢失内容的情况下尽可能多地裁剪页面,则此功能非常有用。

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