0

我正在尝试将简单的 PostScript 发送到具有装订完成器的柯尼卡美能达 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

它们都没有任何效果 - 文档被打印但不执行任何装订。

我使用了错误的命令还是我缺少其他东西?

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

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

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

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

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

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

4

1 回答 1

2

依赖于设备的操作(如 Staple,以及 Duplex、Tumble、Collat​​e 等)预计将通过调用 setpagedevice 在语言级别 2 或 3 中进行控制。

一些与设备相关的特性(例如双工)在规范中定义得很好,其他的定义不太清楚,制造商可以创建他们自己的键/值对,这完全是未定义的。setpagedevice 运算符的工作方式将忽略它不理解的任何内容。

所以我希望:

<< /Staple 3 >>

不做任何事。这只是创建了一个带有 Key /Staple 和值为 3 的字典,然后它只是将该操作数留在操作数堆栈上,它将一直保留到作业结束。

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

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

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

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

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

如果您可以捕获上述程序(理想情况下,打印内容尽可能简单以减少大小和复杂性),请将其发布到某个地方的公共 URL,然后将 URL 放在这里。我会看看它。如果您也可以发布您想要修改的 PostScript 程序,那么我可以告诉您在该程序中插入代码的位置。

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

[编辑]

PostScript 程序是 Ghostscript 的 ps2write 设备的输出,所以我怀疑您没有使用 pdf2ps。exe而是使用 pdf2ps.bat,这是一个调用 Ghostscript 的命令 shell 脚本。您还使用的是旧版本的 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
于 2018-09-12T16:19:35.903 回答