后记。获取文档页面大小

时间:2017-01-16 10:54:35

标签: java postscript

我希望获取文档的页面大小,例如A4,A5,A6等。

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

featurebegin{
%%BeginFeature: *PageSize A6

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

但这很慢......

我怎么能这样做?是否存在用于获取完整文档信息的库?

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

2 个答案:

答案 0 :(得分:1)

您的解决方案仅适用于符合文件的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

完整的文档信息是什么意思&#39; ?顺便说一句,您需要注意(与PDF不同)PostScript文件是程序,而不是文档。所以唯一方式来了解真正发生的事情是解释程序。

您可以使用Ghostscript,但它没有Java接口,您需要更加具体地了解所需信息。

答案 1 :(得分:0)

如果你通过带有-sDEVICE=bbox的ghostscript运行postscript,它会报告一个矩形的角落,它会裁剪渲染的输出,这可能是(接近)你想要的。

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