【问题标题】:Problems printing PostScript files with PJL commands using gsprint使用 gsprint 使用 PJL 命令打印 PostScript 文件时出现问题
【发布时间】:2012-11-22 08:33:08
【问题描述】:

我们开发了一种内部打印解决方案,允许用户管理他们的打印(审核/合并/审查/发送到多台打印机)等...但是我们在流程的最后 - 最终打印。

目前,我们的解决方案将文档(原始和合并后)存储在 PDF 中。我们需要能够将这些文档发送到特定的打印机,并在某些情况下(当用户选择该选项时)将第 1 页打印到托盘 8,将其余的打印到托盘 1。我们无法拆分 PDF 并打印将它们分开,因为它们也必须由打印机作为单个作业装订。

我们的想法是使用 ghostscript 将 PDF 文件转换为 PostScript 文件,然后将 PJL 命令插入 PostScript,然后使用 gsprint 打印修改后的 PostScript 文件。

不幸的是,ghostscript、postscript、PJL 和 gsprint 的组合似乎不起作用。我们尝试的 PJL 命令,我们可以在通过 windows 复制命令发送到打印机的文本文件中工作,但在放入 PostScript 文件并使用 gsprint 打印时似乎没有相同的影响。

任何人都可以发现我们对 PostScript 所做的任何可怕的缺陷,或者知道为什么我们的 PostScript->PJL amends->gsprint 工作流程可能无法正常工作吗?

在网上很难找到示例,因此很可能我们的 PJL 命令放置不正确。

(//cmets 不在最终文件中)

<ESC>%-12345X@PJL JOB<ESC>&l8H           //start job printing first page 
@PJL ENTER LANGUAGE = Postscript         //to tray 8 (letterhead)
@PJL COMMENT CANPJL SET STAPLE=ONEUPLEFT //indicate the document should be stapled
%!PS-Adobe-3.0                           //start of PostScript file proper
---
%%PageTrailer                            //end of first page
<ESC>%-12345X@PJL EOJ<ESC>%-12345X       //end the first job
%%Page: 2
<ESC>%-12345X@PJL JOB<ESC>&l7H           //start 2nd job to print remaining
---                                      //pages to tray 1 (plain)
---
%%EOF
<ESC>%-12345X@PJL EOJ<ESC>%-12345X       //end 2nd job

然后我们采用这个修改后的 PostScript 并使用 gsprint,如下所示:

gsprint -noquery -ghostscript gswin32c -printer "printer" "C:\postscriptfile.ps"

所有这些都打印到默认托盘并且未装订,即这些都没有按预期工作。

我希望我们正在努力实现的目标很清楚。任何帮助将不胜感激。

提前致谢。

PS:我们所有的打印机都是佳能打印机。

编辑:

在下面 KenS 的回答之后,似乎逻辑工作流程应该改为 PDF->PCL->添加 PJL->使用“复制”发送到打印机

不幸的是,我们仍然遇到这个问题,我们的打印机似乎忽略了某些 PJL 命令(打印机肯定是 PCL 打印机)。

如果我们使用 Microsoft Word 生成的 2 页 PDF,使用 ghostscript 将其转换为 PCL,然后使用 Notepad++ 编辑该 PCL 文件,添加以下内容:

<ESC>%-12345X@PJL JOB NAME = "My Print Job Name"<CR><LF>
@PJL SET DUPLEX = ON
@PJL SET OUTBIN = LOWER
@PJL ENTER LANGUAGE = PCL
...original PCL data...
<ESC>%-12345X@PJL EOJ<CR><LF>
<ESC>%-12345X

文档从下输出托盘中出来,但没有双面打印。但更奇怪的是,当 DUPLEX = ON 时,打印机的打印时间似乎比 DUPLEX = OFF 时的完全相同的作业要长得多,而且听起来它在内部做一些不同的事情。

有什么想法吗?

【问题讨论】:

  • 双面打印可能是非标准的(通常是这样)。由于您使用的是 Windows,您可以尝试将双面作业(例如 2 个空白页)打印到打印机上,看看它们是否以单张纸的形式打印出来?如果可行,那么您可以将相同的作业打印到文件中并查看文件内部以查看 Windows 驱动程序为此嵌入了哪些控制序列。哦等等……
  • 双面打印通常会在您终止作业时重置,并且任何尾随页面都会被刷新。我的猜测是文件中关闭的文档不止一个。你能分享一个例子吗?最好是2个空白页,但我想每页一个字就可以了。
  • 你有没有想过这个问题?我们正在尝试做类似的事情并遇到了与您相同的问题
  • 不,不是真的,项目被搁置一边,我没有机会回去。对不起。
  • @Martyn:您在 PJL 标头中使用了哪些行尾?我发现如果您与行尾不一致,一些打印机会窒息。 PJL“标准”只需要 ,但有些打印机可能同时需要 ,混合和匹配有时也会搞砸。

标签: printing ghostscript pjl


【解决方案1】:

我认为您误解了 gsprint 的运作方式。它获取一个输入文件,将其呈现为位图,在适当的画布上绘制该位图,然后使用 Windows 打印系统在打印机上打印该画布。它根本没有对打印机的任何控制,因此嵌入任何预期控制打印机(与渲染相反)的东西都不会产生任何影响。

此外,PJL 与 HP PCL 打印机相关联,而不是与 PostScript 打印机相关联。虽然您的 PJL 可能在 PCL 打印机上工作,因为它将每一页视为一个单独的作业,但它根本无法在 PostScript 打印机上工作,并且很可能会导致它为您提供错误,取决于解释器是否忽略 PJL 命令。

为了控制打印机,您需要确定打印机支持哪种输入(PostScript 或 PCL),然后您需要将 PDF 转换为该格式,然后插入适当的控制序列。对于 PCL 打印机,您可以合理地使用 PJL,对于 PostScript 打印机,您应该使用 setpagdevice 操作符来控制它。假设您的打印机有一个 Windows .WPD 或 .PPD 文件,可以在那里找到相关的控制序列,或者通过打印一些测试文件并检查它们的内容。

路过;您说您使用的命令在将文本文件发送到打印机时起作用。这意味着打印机至少了解 PJL,并且几乎可以肯定是 PCL 打印机。您不能将文本发送到 PostScript 打印机,它会产生错误,因为 PostScript 是一种编程语言,任何随机文本都会出现语法错误。但是,您可以将文本发送到 PCL 打印机,该打印机假定任何不以 0x1B(转义)开头的内容都只是要打印的文本。

因此,使用 Ghostscript 生成 PCL 输出,插入您的 PJL,然后将结果 直接 发送到打印机应该可以工作。当然,在 PCL 文件中识别每一页的结尾可能会更加困难。

【讨论】:

  • 啊,对,这很有道理。所以我认为 gsprint 已经出局了。我会用更多的想法更新我的问题。谢谢。
  • 实际上有很多不同的 PostScript RIP 接受 PJL,它并不完全限于 PCL 打印机。事实上,PPD 标准特别允许 PostScript 作业以任何 JCL 开头,包括 PJL(请参阅 JCLStartJCLEndJCLToPSInterpreter 关键字)。 PJL 通常用作 MFD(至少,那些没有专有 PDL 的)的 JCL。我正在开发的 MFD 接受 PJL 封装的 PostScript、PDF、PCL 和 TIFF。
  • 多语言设备接受 PJL 是完全正确的,主要是因为它们接受 PCL。然而,PJL 不是 PostScript 规范的一部分。我确实在我的感受中涵盖了各种可能性。
【解决方案2】:

我们遇到了类似的问题,这就是我们使用 ghost 脚本和 PJL 的方式

http://reddymails.blogspot.com/2014/07/how-to-print-documents-using-java-how.html

bfo.com 也有一些商业 jars,它们在没有 ghost 脚本的情况下以纯 java 方式做同样的事情。但你必须为此付出代价:)

【讨论】:

    猜你喜欢
    • 2018-12-04
    • 2015-07-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-26
    • 2022-10-13
    • 1970-01-01
    相关资源
    最近更新 更多