验证Postscript而不尝试打印它?

时间:2008-11-03 08:30:54

标签: java validation postscript ghostscript

在我的应用程序中将数据保存到Postscript会产生一个Postscript文件,我可以在GhostView中查看,但是当我尝试打印时,打印机无法打印它,因为它似乎无效。

有没有办法在Postscript文件中验证/查找错误而不实际将其发送到打印机?首选的是某种Java API /库,但执行相同操作的程序也可以。


编辑#1 :不,我不知道为什么它无效,甚至不一定无效,但是希望能够在ghostview之外验证它,或者弄清楚发生了什么当它无法打印时。


回答:使用ps2ps技巧,我能够看到Postscript的输出,并检查区别。不同之处在于我不允许在Postscript中为图像的宽度或高度设置十进制数,而只允许使用整数。所以我仍然没有找到验证的方法,但这种方式对我的问题来说已经足够了。感谢。

3 个答案:

答案 0 :(得分:7)

每当我需要使用Ghostscript验证PostScript文件而不必实际查看其渲染的页面图像时,我使用“nullpage”设备:

gswin32c ^
   -sDEVICE=nullpage ^
   -dNOPAUSE ^
   -dBATCH ^
   c:/path/to/file/to/be/validated.pdf-or-ps ^
   1>validated.stdout ^
   2>validated.stderr

如果出现问题,将会有一个非零%errorlevel%集,validated.stderr日志文件将包含Ghostscript在渲染过程中吐出的所有消息。

答案 1 :(得分:4)

你知道为什么它无效吗?

我的建议是将它提供给Ghostscript / Ghostvoiew,但鉴于Ghostview可以查看它,似乎至少有些解释器认为它是有效的Postscript。

因此,它可能是您的打印机特有的东西 - 要么是Ghostscript允许的PS中的某些东西挑剔,要么是访问打印机上不存在的东西(可能是文件系统)或超出内存限制,或者......

关键在于它可能不是一个错误的PS程序,因此用于验证它的库/ API可能无济于事

编辑:是否有任何打印?您是否尝试过其他制造商(或Postscript解释器的供应商)的打印机。 Ghostview是否提供/记录任何警告或错误?

文件来自哪个(什么应用程序)?

您可以生成该文档的其他实例吗? (例如,一个非常简单/空的,看看是否也会出错)

除非有API提供对打印机中使用的特定解释器的访问权限,否则我认为您 对其他PS解释器(Ghostscript)进行验证。

由于世界上没有那么多PS克隆,因此访问另一个非基于GS的克隆可能并不容易

Edit2:此链接(如果信息很旧)提供了有关如何从错误中获取打印机详细信息的信息:http://www.quite.com/ps/errors.htm

答案 2 :(得分:3)

如果你能在ghostview上看到它,那就意味着ghostscript可以解析它。

所以,你可以尝试用来打印(但不是实际验证)你的文件的一个技巧是使用ghostscript的postscript输出模式(有一个名为ps2ps的包装器,它主要添加{{1还有-sDEVICE=pswrite使用ps2ps2)。