PostScript / PCL-获取文档页面信息:页面大小,黑白/彩色

问题描述 投票:0回答:1

我需要从附言或pcl文件确定文档页面信息。最好是在Java中,但Ghostscript / Ghostpcl也是一样。

我试图获得以下信息的内容:

页面颜色

This can be achieved with ghostscript/ghostpcl using the device called inkcov.

PostScript
gswin64c.exe -dNOPAUSE -dBATCH -sDEVICE=inkcov -o- input.ps

PCL6
gpcl6win64 -dNOPAUSE -dBATCH -sDEVICE=inkcov -o- input.pcl

页面大小

There is a device called bbox which gives me the boundary box per page for PostScript or PCL6 documents

PostScript
gswin64c.exe -dNOPAUSE -dBATCH -sDEVICE=bbox -o- input.ps

PCL6
gpcl6win64 -dNOPAUSE -dBATCH -sDEVICE=bbox -o- input.pcl

但是最后,边界框是页面大小的近似值。我检查了以下帖子,但该解决方案似乎不适用于我的ghostscript版本9.5Getting the page sizes of a PostScript document

ghostscript postscript page-size pcl6
1个回答
0
投票

bbox设备应提供准确的信息,它以什么方式不准确?我自己进行了测试,但您尚未提供文件来证明这一点。

您需要记住,某些对象(例如图像)可能会将页面标记为空白。就bbox设备而言,这仍视为标记页面。如果您只想计算非白色输出样本,则需要渲染文档(以您打算使用的最终分辨率)并实际计算非白色像素。这可能是非常缓慢的操作,因为它需要读取可能是非常大图像的每个输出颜色样本。

虽然并不难编码,但是您可以使用inkcov设备作为在同一遍中进行两项操作的基础。

或者您可以让GhostPDL为您提供渲染的位图,并使用其他工具/语言为边框编码解决方案。

啊,您实际上是在寻找所需的介质尺寸,而不是边界框吗?那根本不是一回事。边界框返回最小的矩形,该矩形将输出中的所有标记括起来,但不会告诉您所请求的媒体有多大。因此,即使媒体很大,左下角的小矩形也会为您提供一个小的BBox。

您可以通过编写一个小的PostScript程序来轻松地从PostScript中获取介质尺寸请求,但是您不能使用PCL做到这一点。在这两种情况下,最简单的解决方案也许是将内容以72 dpi的速度渲染到文件中,然后读取渲染的输出的宽度/高度,这将为您提供以磅为单位的介质尺寸。

或使用pdfwrite设备将输入转换为PDF,然后可以使用pdf_info.ps PostScript程序为您提供PDF文件中页面的大小。

© www.soinside.com 2019 - 2024. All rights reserved.