Java 后记获取文档页面大小
我希望采用文件的页面大小,如A4、A5、A6等 解决方案,我发现它解析postscript文本并从中提取字符串Java 后记获取文档页面大小,java,postscript,Java,Postscript,我希望采用文件的页面大小,如A4、A5、A6等 解决方案,我发现它解析postscript文本并从中提取字符串A6 功能开始{ %%BeginFeature:*页面大小A6 设置页面设备 %%末端特征 }特征清理 但这很慢 我怎么能做到?是否存在获取完整文档信息的库 如果存在,我更喜欢java解决方案。您的解决方案只适用于符合DSC(文档结构约定)的文件。虽然许多文件确实符合,但其他文件则不符合。此外,仅当PostScript文件包含注释(%在PostScript中引入注释)时,此操作才有效
A6
功能开始{
%%BeginFeature:*页面大小A6
设置页面设备
%%末端特征
}特征清理
但这很慢
我怎么能做到?是否存在获取完整文档信息的库
如果存在,我更喜欢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
“完整文档信息”是什么意思?顺便说一下,您需要知道(与PDF不同)PostScript文件是程序,而不是文档。因此,了解真正发生了什么的唯一方法是解读程序
您可以使用Ghostscript,但它没有Java接口,您需要更具体地了解所需的信息。如果您使用
-sDEVICE=bbox
通过Ghostscript运行postscript,它将报告矩形的角点,以裁剪渲染输出,这可能(接近)您想要的
信息通常以DSC
%%BoundingBox:x0 y0 x1 y1
格式打印到stderr
。自己找一份官方PostScript语言参考。一般来说,“PostScript”文件没有(也不需要!)提及页面大小,尽管物理页面大小可能“在生成此页面描述的过程中”(参考文献)假设,并且这通常是以点为单位的维度,而不是您认为的名称。仅供参考,DeferredMediaSelection
在我的PLRM(第三版)中描述,但当然不能保证文件中包含这一点。(@Sergey:它对您很有用,因为它的/PageSize
值就是我上面提到的:以点为单位的大小。)Ghostscript可以通过充分的编程提供各种信息。就像我说的,你想知道什么?使用PostScript解释器的一个要点是,即使信息不在注释中,或者隐藏在过程中,它也可以找到信息。格雷普和朋友们将无法这样做。
/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