修改cups web管理页面
可能是天气干燥的原因,我的爱普生打印机每天打印的第一张纸上黑色总是缺色,清洗一下喷头后就正常了。通常是用电脑上的打印机首选项里的打印头清洗功能,然后执行喷嘴检查。
我一般不用电脑连打印机,而是在平板上用web界面调度打印。这样,只能通过长按打印机上的墨水键来实现清洗打印头。但没有检查喷嘴的按钮,如果想让它打印出检查喷嘴图案,需要关机,然后按住出纸键,同时再按开机键三秒,这样,打印机启动后,就会自动打印出一张检查喷嘴图案。
我是用cups管理打印机的,cups的网页版的管理界面上也有打印测试的功能,但输出的不是横斜纹图案。使用起来不方便。今天突发奇想,修改一下cups的页面,添加上喷嘴检查和打印头清洗两个功能菜单,这样,直接在平板上就可以通过cups web管理界面执行之前必须在电脑上才有的功能了。
cups的模板文件在/usr/share/cups/templates目录下(服务器是ubuntu 18.04)。
只需修改一个页面
/usr/share/cups/templates/printer.tmpl
在相应的下拉列表代码里添加这两个选项:
<OPTION VALUE="clean-head">打印头清洗</OPTION> <OPTION VALUE="nozzle-check">检查喷嘴</OPTION>
另外一处要修改的是它的onChange事件
<SELECT NAME="OP" ONCHANGE="if(mymod()) document.maintenance.submit();">
在这里添加了一个自己的函数:
<script> function mymod(){ let mod =document.maintenance.OP.value; let host = 'https://' + window.location.hostname + '/'; if(mod == 'clean-head' || mod == 'nozzle-check'){ window.open(host + 'escputil.php?op='+mod); return false; }else return true; } </script>
在模板里找个空地方把这段js代码添加进去就行了。这段程序的逻辑是,如果用户点击的是cups原有的菜单,正常执行,如果是点击我添加的两个自定义菜单,执行js函数里的代码。
你会看到,还需要一个escputil.php文件,这个文件里的内容很简单,就是在命令行里调用执行打印机的打印头清洗和喷嘴检查功能:
<?php `escputil --{$_GET['op']} --new`;
实际操作起来还是很方便的。在爱普通R330和L1800打印机上测试过,没有问题。
阅读余下内容