后记。获取文档页面大小
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
。
我要取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
。