6

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

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


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


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

4

3 回答 3

8

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

于 2010-06-05T17:18:26.527 回答
4

知道为什么无效吗?

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

所以它可能是特定于您的打印机的东西 - 要么它对 Ghostscript 允许的 PS 中的某些东西挑剔,要么它正在访问您的打印机(可能是文件系统)上不存在的东西,或者超过了一些内存限制,或者......

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

编辑:有任何打印吗?您是否尝试过来自不同制造商的打印机(或者 Postscript 解释器的供应商,无论如何)。Ghostview 是否给出/记录任何警告或错误?

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

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

除非有一个 API 可以访问您的打印机中使用的特定解释器,否则我认为您正在针对另一个 PS 解释器(Ghostscript)对其进行验证。

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

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

于 2008-11-03T08:45:16.187 回答
3

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

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

于 2008-11-03T09:05:33.307 回答