PostScript 不会在 Konica Minolta 上将两页装订在一起

PostScript won't staple two pages together on Konica Minolta

我正在尝试将简单的 PostScript 发送到 Konica Minolta C364 打印机,该打印机具有用于装订的修整器。如果我通过直接打印 PDF 文件并从打印用户界面选择适当的设置来执行此操作,我可以打印几页并装订它们。但是,我无法通过 PostScript 命令执行相同的操作。

我尝试了很多不同的命令,将它们添加到 .ps 文件的开头和结尾,从最简单的开始:

<< /Staple 3 >>

然后尝试一些其他选项:

<< /Staple 3  /StapleDetails << /Type 17 /Position 17 >> >> setpagedevice
or    
<</Staple 3 /StapleDetails <</Type 1 /StapleLocation(SinglePortrait)>> >> setpagedevice

还有更多建议,例如:

<</BindingLocation (LongEdge) >> setpagedevice 
<</Collate true /Rotate false /Jog 0>> setpagedevice 
<</Staple 2 /StapleDetails <</Type 5 /Position (1PLU)>> >> setpagedevice

None 其中有任何效果 - 文档已打印但未执行任何装订。

我是不是使用了错误的命令,还是我遗漏了什么?

我还尝试在 Internet 上寻找一个简单的预制 .ps 文件,其中包含相同的命令,但我找不到。在不同的论坛和网站上有许多不同的建议,但到目前为止我没有尝试过任何成功,所以欢迎任何建议。谢谢!

编辑: 这是我正在使用的示例 .ps 文件的 link: https://www9.zippyshare.com/v/QW6w7yHl/file.html

不幸的是,我必须通过 link 来完成,因为代码太长了,大约 11k 行。

编辑2: 将 PostScript 保存到文件而不是将其发送到打印机后,我能够查看生成的代码并提取以下行,如果添加到文件顶部,这些行将起到装订的作用:

@PJL COMMENT
@PJL SET ORIENTATION = PORTRAIT
@PJL SET BINDING = LEFT
@PJL SET FINISH = LEFT1POINT
@PJL SET EDGEMATCHING = FINISH
@PJL ENTER LANGUAGE = POSTSCRIPT

希望他们能被添加到下面的答案中!

与设备相关的操作(如装订、双面打印、翻滚、整理等)预计将在语言级别 2 或 3 中通过调用 setpagedevice 进行控制。

规范中明确定义了一些与设备相关的功能(例如双工),其他的定义不太明确,制造商可以创建 key/value 对自己的功能,这些功能完全未定义。 setpagedevice 运算符的工作方式将忽略它不理解的任何内容。

所以我希望:

<< /Staple 3 >>

什么都不做。这只是简单地创建了一个包含 Key /Staple 和值为 3 的字典,然后它只是将该操作数留在操作数堆栈中,它将一直保留到作业结束。

您的其他示例将字典传递给 setpagedevice,因此它们可能会执行某些操作,但 Collat​​e 和 BindingLocation 不会影响装订!请注意,在 PostScript 程序结束时发送它们不会做任何有用的事情,因为到那时程序已完成并且页面将被打印。

也有可能把它放在PostScript程序的前面也没有任何效果,因为程序的内容有可能是通过将设备重置为默认状态来启动的。如果是这种情况,那么您需要将 setpagedevice 调用插入程序的适当位置。如果程序符合 DSC,那么有一个定义的位置可以放置它,如果不是,那么坦率地说,所有的赌注都没有了。但大多数 PostScript 程序都符合 DSC。

问题是所需值的具体细节是特定于制造商的,因此无法告诉您确切应该使用什么。

找出答案的最佳方法通常是 select 'print to file' 并使用您知道将启用装订的设置打印文档(如有必要,请事先尝试)。完成后,您可以使用文本编辑器打开生成的文件并查看装订设置。

不幸的是,打印机的控制面板可以执行各种操作,甚至可能无法通过 PostScript 控制打印机。你确定这可以通过 PostScript 控制吗?您是否尝试联系制造商并询问他们的支持部门?

如果您可以像上面那样捕获一个程序(理想情况下打印的内容尽可能简单以减少大小和复杂性),post 将其转换为 public URL某处,然后将 URL 放在这里。我会看看它。如果您也可以 post 您想要修改的 PostScript 程序,那么我可以告诉您在该程序中的何处插入代码。

如果您不能捕获 PostScript 程序,那么除了询问打印机制造商之外,我想不出任何方法来做到这一点。

[编辑]

PostScript 程序是 Ghostscript 的 ps2write 设备的输出,所以我怀疑您没有使用 pdf2ps.exe,而是使用 pdf2ps.bat,一个命令shell 调用 Ghostscript 的脚本。您还在使用旧版本的 Ghostscript (9.20)。出于安全原因,您应该升级到版本 9.25(将在接下来的几天内发布)。

但我仍然不知道您的订书机的正确设置是什么。正如我上面提到的,如果您可以从您的操作系统打印到打印机,并让它激活装订,那么您可以捕获 PostScript 并从那里提取相关部分。

但如果没有它,我就没有什么可以真正告诉你的了。

这里是原始问题的 PJL(不是 PostScript)代码,显然适用于添加装订:

@PJL COMMENT
@PJL SET ORIENTATION = PORTRAIT
@PJL SET BINDING = LEFT
@PJL SET FINISH = LEFT1POINT
@PJL SET EDGEMATCHING = FINISH
@PJL ENTER LANGUAGE = POSTSCRIPT