我希望获取文档的页面大小,例如A4,A5,A6等。
解决方案,我发现它解析了postscript文本并从中提取字符串A6
featurebegin{
%%BeginFeature: *PageSize A6
<</DeferredMediaSelection true /PageSize [298 420] /ImagingBBox null /MediaClass null>> setpagedevice
%%EndFeature
}featurecleanup
但这很慢......
我怎么能这样做?是否存在用于获取完整文档信息的库?
我更喜欢java中的解决方案,如果存在的话。
答案 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
。