我们开发了一种内部打印解决方案,允许用户管理他们的打印(审计/合并/审核/发送到多个打印机)等等...但是我们在流程的最后一步 - 最终打印时遇到了问题。
目前,我们的解决方案将文档(原始文档和合并后的文档)存储为PDF。我们需要能够将这些文档发送到特定的打印机,并在某些情况下(当用户选择该选项时)将第一页打印到托盘8,其余页面打印到托盘1。我们无法拆分PDF并单独打印它们,因为它们还必须作为单个作业由打印机装订。
我们的想法是使用ghostscript将PDF文件转换为PostScript文件,然后在PostScript中插入PJL命令,然后使用gsprint打印此修改后的PostScript文件。
不幸的是,ghostscript、postscript、PJL和gsprint的组合似乎不起作用。我们尝试的PJL命令可以通过windows复制命令发送到打印机的文本文件中使其正常工作,但在放入PostScript文件并使用gsprint打印时似乎没有同样的效果。
有人能否发现我们在对PostScript进行操作时存在严重缺陷,或者有任何想法,为什么我们的PostScript->PJL修正->gsprint工作流可能不起作用?
在网上很难找到示例,因此我们放置PJL命令的位置可能是不正确的。
(//注释不包含在最终文件中)
我们接着使用修改后的PostScript并使用gsprint,具体如下:
这些内容都会默认打印到默认的托盘上,并且没有装订,也就是说,这些内容都不能按预期工作。
我希望我们试图实现的目标很清楚。任何帮助都将不胜感激。
提前致谢。
PS:我们所有的打印机都是佳能打印机。
编辑:根据下面KenS的答案,似乎逻辑工作流程应该是PDF->PCL->添加PJL->使用“copy”发送到打印机
不幸的是,我们仍然在这方面遇到问题,某些PJL命令似乎被我们的打印机忽略了(这些打印机肯定是PCL打印机)。
如果我们拿一个由Microsoft Word生成的2页PDF文件,使用ghostscript将其转换为PCL文件,然后使用Notepad++编辑该PCL文件并添加以下内容:
目前,我们的解决方案将文档(原始文档和合并后的文档)存储为PDF。我们需要能够将这些文档发送到特定的打印机,并在某些情况下(当用户选择该选项时)将第一页打印到托盘8,其余页面打印到托盘1。我们无法拆分PDF并单独打印它们,因为它们还必须作为单个作业由打印机装订。
我们的想法是使用ghostscript将PDF文件转换为PostScript文件,然后在PostScript中插入PJL命令,然后使用gsprint打印此修改后的PostScript文件。
不幸的是,ghostscript、postscript、PJL和gsprint的组合似乎不起作用。我们尝试的PJL命令可以通过windows复制命令发送到打印机的文本文件中使其正常工作,但在放入PostScript文件并使用gsprint打印时似乎没有同样的效果。
有人能否发现我们在对PostScript进行操作时存在严重缺陷,或者有任何想法,为什么我们的PostScript->PJL修正->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->使用“copy”发送到打印机
不幸的是,我们仍然在这方面遇到问题,某些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相同的作业,并且听起来它在内部执行了不同的操作。
有任何想法吗?