linux打印驱动适配

引言

linux操作系统打印驱动适配。

CUPS打印系统

CUPS即Common UNIX Printing System,即通用Unix打印系统,所有linux操作系统,均采用CUPS进行打印。
CUPS提供了打印任务所需要的接口和工具。

CUPS数据流

cups将上层的数据,通过其自带的转换工具,例如pdftopdf、gstoraster等转换为相应的数据格式。cups的转换步骤是依据ppd文件中cupsFilter一栏指定的数据格式来转换的。
上述转换后的数据(例如raster数据),将作为cupsFilter中指定的filter程序的输入,继续转换为打印机支持的数据格式。
参考资料:

  1. cups过滤器结构图
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-TQuiJY7K-1585105550455)(D:/nwt_recv/%E5%AD%99%E5%B8%85/cups%E8%BF%87%E6%BB%A4%E5%99%A8%E7%BB%93%E6%9E%84%E5%9B%BE.png)]
  2. cups raster(栅格)数据格式
    link

PPD文件

ppd文件存放在/usr/share/cups/model/下,安装打印机是,首先会根据打印机url,找到该目录下对应的ppd文件。
标准的CUPS安装已经携带了很多PPD(Postscript Printer Description)。另外,foomatic-filters,gimp -print和hplip已经自带了很多PPD文件,CUPS会自动去制定路径下检测他们。
对于linux打印驱动,制造商都会提供一个PPD文件,其中包含有关特定打印机型号的所有特定于打印机的信息:基本打印机功能,例如打印机是否为彩色打印机,字体,PostScript级别等,尤其是用户可调整的选项,例如纸张尺寸,分辨率等。
ppd的内容将影响打印配置界面中显示的打印选项内容。

filter文件

filter(适配器),就是我们要开发的打印驱动,它的作用的是将cups的raster数据转换为打印机支持的打印格式数据。

国产操作系统适配

主要解决国产操作系统环境不稳定、交叉编译错误(缺少相关库)等问题。
其中打印驱动开发即filter的开发。

filter开发

filter开发一般基于:

  1. cups源码
    cups源码包顶层目录下的filter目录下。
    开发filter一定要确定目标机上运行的cups版本,不同版本cups会存在不兼容的情况。
    各版本源码下载地址:
    cups源码下载
    cupsAPI接口说明
  2. foomatic源码
    foomatic-rip是一种通用打印过滤器,可与每个已知的免费软件打印机后台处理程序一起使用。它具有以下功能:
    它将PostScript和PDF(以及其他文件格式)从标准输入转换为打印机的本地语言(通常放置在标准输出中)。
    编译出来的foomatic-rip可识别打印机数据,并进行相应的转换,然后根据ppd中内容将转换后的数据再次转换为ppd指定的内容。
  3. libusb
    国产操作系统下,有时会出现usb打印乱码,具体原因未知。可采用调用libusb下的resetusb相关接口规避掉。

cups调试和可能产生的问题

查看cups执行过程中的log

  1. 修改log等级
    vi /etc/cups/cupsd.conf
    其中LogLevel指定了log的等级,将其改为debug,可输出所有等级log
  2. 查看log文件
    查看正常打印时的log:
    cat /var/log/cups/access_log
    查看出错时的log:
    cat /var/log/cups/error_log
  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值