我们开发了一种内部打印解决方案,允许用户管理他们的打印(审核/合并/审查/发送到多台打印机)等......但是我们在流程的最后 - 最终打印时遇到了问题。
目前,我们的解决方案将文档(原始和合并后)存储在 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 命令的放置不正确。
(//评论不在最终文件中)
<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 时的完全相同的作业要长得多,而且听起来它在内部做一些不同的事情。
有任何想法吗?