后记。获取文档页面大小

Postscript. Get document page size

我要取A4、A5、A6等文件的页面大小

解决方案,我发现它是解析后记文本并从中提取字符串 A6

featurebegin{
%%BeginFeature: *PageSize A6

    <</DeferredMediaSelection true /PageSize  [298 420] /ImagingBBox null /MediaClass null>> setpagedevice
%%EndFeature
}featurecleanup

但这工作起来很慢...

我该怎么做?是否存在任何可获取完整文档信息的库?

如果存在,我更喜欢 java 中的解决方案。

您的解决方案仅适用于符合 DSC(文档结构约定)的文件。虽然许多文件符合要求,但其他文件不符合。此外,只有当 PostScript 文件包含注释时才有效(% 在 PostScript 中引入注释)。

您可以改写 setpagedevice 运算符并让它打印请求的介质尺寸(如果存在)。

/Oldsetpagedevice /setpagedevice load def

/setpagedevice {
  dup /PageSize known {
    dup /PageSize get
    dup 0 get 20 string cvs exch 1 get 20 string cvs exch
    (Requested Media Size is ) print print (points by ) print print (points\n) print
  } if
  Oldsetpagedevice
} bind def

'full document information' 是什么意思?顺便说一句,您需要知道(与 PDF 不同)PostScript 文件是程序,而不是文档。因此,唯一 了解实际情况的方法是解释程序。

您可以使用 Ghostscript,但它没有 Java 界面,您需要更具体地了解您想要的信息。

如果您 运行 通过带有 -sDEVICE=bbox 的 ghostscript 的后记,它将报告裁剪渲染输出的矩形的角,这可能是(接近)您想要的。

信息通常以 DSC %%BoundingBox: x0 y0 x1 y1 格式打印到 stderr