如何在不打印的情况下验证一个Postscript文件?

6
在我的应用程序中将数据保存为Postscript文件后,我可以在GhostView中查看该文件而不会出现任何问题,但是当我尝试打印它时,打印机无法打印它,因为它似乎是无效的。
有没有一种方法可以验证/查找Postscript文件中的错误,而不必实际发送到打印机?最好是使用某种Java API /库,但也可以使用执行相同操作的程序。
编辑#1:不,我不知道为什么它无效,甚至不一定知道它是否无效,但希望能够在ghostview之外验证它,或者在无法打印时弄清楚发生了什么。
回答:使用ps2ps技巧,我能够查看Postscript输出并检查差异。差异在于,我不能在Postscript中使用图片宽度或高度的小数,而只能使用整数。所以我仍然没有找到一种验证的方法,但这种方法对我的问题已经足够好了。谢谢。
3个回答

9

每当我需要使用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在渲染过程中输出的所有消息。


4
你知道为什么它无效吗?
我的建议是将其输入Ghostscript / Ghostvoiew,但鉴于Ghostview可以查看它,至少有些解释器认为它是有效的Postscript。
因此,这可能是您的打印机的特定问题 - 它要求Ghostscript允许的PS中的某些内容,或者它正在访问打印机上不存在的某些内容(文件系统等),或超出了某些内存限制,或...
重点是它可能不是错误的PS程序,因此验证它的库/ API可能没有用。
编辑:它是否有任何打印?您尝试过来自其他制造商(或Postscript解释器供应商)的打印机吗?Ghostview是否给出/记录任何警告或错误?
文档从哪个应用程序起源?
您能生成文档的其他实例吗? (例如,一个非常简单/空的文档,以查看是否也会出现错误)
除非有API提供对打印机中使用的特定解释器的访问权限,否则我认为您正在使用另一个PS解释器(Ghostscript)进行验证。
由于世界上并没有那么多PS克隆版,因此获得另一个非GS基础版的访问权限可能并不容易。
编辑2:此链接(如果信息相当古老)提供有关如何从打印机获取有关错误的更多详细信息:http://www.quite.com/ps/errors.htm

3

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

因此,您可以尝试使用ghostscript的postscript输出模式来打印(但不是实际验证)您的文件,其中有一个名为ps2ps的包装器用于此(它主要添加了-sDEVICE=pswrite;还有ps2ps2,它使用-sDEVICE=ps2write)。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接