2008-11-03 27 views
6

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

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


编辑#1:不,我不知道为什么它是无效的,甚至也不一定,如果它是无效的,但希望能够验证它Ghostview工具之外,还是弄清楚是怎么回事时,它不能打印。


:嗯使用ps2ps招我能看到后记输出是否有检查的差异。区别在于我不允许在Postscript中为图像的宽度或高度使用十进制数字,而只能使用整数。所以我仍然没有找到验证的方法,但这种方式对我的问题已经足够了。谢谢。

回答

3

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

所以,一招你可以尝试使用打印(而不是实际验证)文件是使用ghostscript的后记输出模式(有一个叫ps2ps它的包装,其中主要增加了-sDEVICE=pswrite;还有ps2ps2其使用-sDEVICE=ps2write)。

4

你知道它为什么无效吗?

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

所以它可能是特定于您的打印机的东西 - 无论是PS中Ghostscript允许的东西,还是访问打印机中不存在的东西(可能是文件系统)或超出内存限制的东西,或...

的一点是,它可能不会是一个错误的PS程序等库/ API来验证它可能没有帮助

编辑:是否有任何的列印吗?您是否尝试过使用不同制造商(或Postscript解释器供应商)的打印机? Ghostview会提供/记录任何警告或错误吗?

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

您可以生成文档的其他实例吗? (例如,看到一个非常简单的/空单如果还给出了错误)

除非有提供访问该公司在打印机中使用的特定解释器的API,我想你验证其对另一PS解释(Ghostscript的)。

由于没有那么多的PS克隆世界,让访问其他非GS基于可能一个是不会很容易

EDIT2:此链接(如果很旧的信息)给出的信息关于如何从错误获取打印机上的更多详细信息:http://www.quite.com/ps/errors.htm

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 

在有问题的情况下,会出现一个非-zero %errorlevel%集合,并且validated.stderr日志文件将包含Ghostscript在呈现期间吐出的所有消息。

相关问题