CUPS旁路接口

CUPS旁路接口,第1张

概述CUPS旁路接口

我有一个服务器,我有几个串行打印机设置为杯子中的原始队列。 在其中的每一个上,我都安装了接口脚本来执行一些简单的输出 *** 作,并且使用在服务器上运行的应用程序来处理IPC,并且喜欢直接连接到打印机并写入到它们,这与杯子不一致他专门控制打印机设备。 那里的一切似乎都在起作用。

在服务器上input另一个应用程序,当它穿过杯子(在通过自己的打印假脱机程序后台打印)时,似乎是将特定于打印机的转义代码注入打印出来的文件中。 换句话说,由这个应用程序产生的印刷品不是简单的纯文本字符stream,而是包含打印机意图解释的二进制控制码。

我遇到的问题是,杯子似乎绕过我的接口,当它从这个第二个应用程序接收这样的文件。 我通过设置两个几乎相同的打印文件来testing。 第一个包含纯文本“Hello,world!” 紧接着换行符; 第二个包含了打印机之一的“Hello,world!”的一些转义码。 和换行符。 然后,我在打印机界面上添加了“睡眠5”行,以便在打印时出现明显的延迟。

当我用lp打印第一个文件时,五秒钟内没有任何事情发生,然后打印机启动并写下“Hello,world!”。 但是,当我使用完全相同的lp命令打印第二个文件时,它立即打印出“Hello,world!”。 没有睡觉。 我还注意到,我可以使用lp的“ -o raw ”选项强制第一个文件具有相同的行为(立即打印出来,而不需要五秒延迟)。

windows“file:”端口的一个版本,它不会提示input文件名,而是自动生成一个

如何从打印作业中获得份数?

如何在linux上的GVim打印机对话框?

直接从dos命令行打印pdf文件

检索当前用户打印机的图标

我的猜测是,杯子正在查看正在打印的实际数据并试图确定其types,并且当它看到数据中的打印机转义代码时,它确定这是“原始”打印并绕过界面。 这不是我期望的行为,因为我把打印机设置为“原始”队列,并假定这意味着杯子只是通过接口发送给它的任何东西; 不过,这是我所看到的行为。

我的问题是: 有没有办法向杯子发送一个选项(除了-o raw ,看似绕过界面),告诉他不要检测到收到的打印数据的types,然后发送到接口脚本? 或者, 是否有一种方法来指定传入数据的格式(例如,告诉杯子它正在接收的是“纯文本”,即使它包含转义码),使杯子不会看它,只是将它传递给接口?

如何使用JavaScript / jquery通过调用使用.bat文件自动打印

linux,打印一个文件中的所有行,而不是以

windows 8共享打印机错误“无法安装内核模式打印驱动程序。 ”

如何取消共享共享打印机?

打印和增加数组值

您拥有的打印队列不是 “原始”的!

首先 ,你似乎没有意识到CUPS用什么原始打印队列 :一个原始队列是一个没有关联…

…既不是接口脚本 (与/etc/cups/interfaces/的队列本身同名的脚本)

…也不是postscript打印机描述 (PPD)文件(PPD文件与队列本身具有相同的名称,后缀为* .ppd ,位于/etc/cups/ppd/ )。

既然你说你已经为你的打印机队列安装了一个接口脚本,根据定义,这些不是原始队列!

要将原始作业(即未过滤)作业发送到非原始CUPS队列,除了在lp命令行上使用-o raw之外没有别的办法。 您也可以使用(或者)选项-o document-format=application/vnd.cups-raw …但是这具有完全相同的含义:它使CUPS使用相同的作业处理,并且只是键盘按键的7倍冲床。

这两种方式都会导致CUPS跳过自动键入传入作业文件的步骤,并将其通过未过滤到队列的后端。

在您的cupsd.conf启用了LogLevel deBUG通过查找关键字auto-tyPing可以在日志文件/var/log/cups/error_log观察到自动输入步骤及其结果:提及Request file type is ...的行Request file type is ...告诉你哪个MIME类型的CUPS将你的传入作业分类为。)

如何强制CUPS以文本形式处理传入的打印数据

在lp命令行中使用-o document-format=text/plain 。

如何设置CUPS的“原始”队列

如果您想将现有的打印队列转换为原始打印队列,只需删除关联的PPD文件( /etc/cups/ppd/myprinter.ppd )或关联的接口脚本( /etc/cups/interfaces/myprinter )即可。

如果你想从一开始就安装一个打印队列作为一个原始打印队列,只需使用printername和后端URI,但是不要指定任何PPD或任何接口脚本来关联它:

用于安装“原始”打印队列的示例命令:

sudo lpadmin -p my_raw_printer -E -v socket://192.168.177.188:9100

( -p是指定打印队列名称, -E是从启动打印队列。)

猜测:为什么第二个应用程序可能绕过你的接口脚本

如果没有看到完整的系统设置并查看第二个应用程序(其打印看起来与第一个应用程序的行为不同),或者无法访问调试级别的CUPS error_log文件,则只能推测:

我的猜测是你的第二个应用程序使用一些硬连接的打印命令隐式使用-o raw打印命令选项。

总结

以上是内存溢出为你收集整理的CUPS旁路接口全部内容,希望文章能够帮你解决CUPS旁路接口所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1259846.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-07
下一篇 2022-06-07

发表评论

登录后才能评论

评论列表(0条)

保存