【发布时间】: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