代码之家  ›  专栏  ›  技术社区  ›  Epaga Alex Reynolds

在不尝试打印的情况下验证Postscript?

  •  6
  • Epaga Alex Reynolds  · 技术社区  · 16 年前

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

    有没有一种方法可以在不实际将Postscript文件发送到打印机的情况下验证/查找其中的错误?首选的是某种类型的Java API/库,但做同样事情的程序也可以。


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


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

    3 回复  |  直到 16 年前
        1
  •  8
  •   Kurt Pfeifle    14 年前

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

        2
  •  4
  •   The Archetypal Paul    16 年前

    你知道为什么它无效吗?

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

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

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

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

    文档源自何处(什么应用程序)?

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

    除非有API提供对打印机中使用的特定解释器的访问,否则我认为您 用另一个PS解释器(Ghostscript)验证它。

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

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

        3
  •  3
  •   CesarB    16 年前

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

    因此,您可以尝试使用一种技巧来打印(但不是实际验证)您的文件,即使用ghostscript的postscript输出模式(有一个名为 ps2ps 对于它,这主要是增加 -sDEVICE=pswrite ;还有 ps2ps2 它使用 -sDEVICE=ps2write ).