修改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打印机上测试过,没有问题。

阅读余下内容
 

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注


京ICP备12002735号