20 Linux打印服务CUPS原理

20 Linux打印服务CUPS原理日常办公中免不了打印文件,毕竟无纸化办公还有不少路要走;那么在Linux中是如何实现打印文件的呢,接下来我们就介绍下Linux下打打印服务CUPS构成。(仍然以统信UOS桌面系统为例)CUPS打印服务CUPS(CommonUnixPrinterSystem)是由苹果公司开发的标准化打印系

大家好,欢迎来到IT知识分享网。

日常办公中免不了打印文件,毕竟无纸化办公还有不少路要走;那么在Linux中是如何实现打印文件的呢,接下来我们就介绍下Linux下打打印服务CUPS构成。(仍然以统信UOS桌面系统为例)

CUPS打印服务

CUPS(Common Unix Printer System) 是由苹果公司开发的标准化打印系统框架。适用于MacOS和类Unix系统。

CUPS使用IPP协议,并且支持 Systemp V 和 Berkeley打印命令(lp,lpr)接口、web接口、CAPI 多种方式来管理打印机、打印任务。支持本地打印机、网络打印机,并能够共享打印机。

各类应用(比如浏览器)能够调用CUPS打印指定的页面,还可接受应用指定的各种参数,如纸张大小等。不同厂商生产的打印机存在差异,但也都能够接入到CUPS中使用。

CUPS是以客户机、服务器为基础工作的。客户机和服务器通常位于同一台机器上。当打印文件时,此机器(或应用程序)就是客户机。服务器就是在后台运行的、用以打印文件的CUPS程序。

打印原理和打印语言

image

其工作流程都是首先在计算机端将打印内容解释成标准的页面描述文件,然后传送到打印机控制器中。

打印语言:

有通用标准打印语言如PCL、PS(PostScript)、GDI,还有厂商自有的打印语言,如爱普生(Epson)的Esc/Page,佳能的Capsyl,施乐的Xes等,它们都各具特点,打印语言又叫页面描述语言(PDL)。

PCL语言由HP公司开发,在处理文本或一些常见办公应用软件下的文档时具有非常明显的速度优势;目前市场上支持的打印机最多;

PS语言由Adobe公司开发,打印速度要慢一些,但在打印大的图形图像文件时具有一定的速度优势,同时其在图形表现准确度、色彩表现准确度和一些字库表现准确度方面更强;

GDI语言由微软开发,文本解释能力很弱,需要借助windows系统,其打印机价格非常低廉,但在Linux环境中很难有效支持。

CUPS组成

image

  • CUPS主要是由三个部分组成: cupsd, filter, backend。
  • 打印的请求可以是其他应用程序(如WPS 等)发起,经CUPS处理后翻译成打印机语言发给打印机。
  • 每个filter和backend都是独立的可执行程序,数据流通过匿名管道传递。这种结构便于打印机厂商添加自己的驱动。

发现打印机不依赖于有没有驱动程序。

cupsd 后台服务程序

cupsd作为http服务器程序,接受内部和外部的IPP请求(IPP协议基于http协议)、处理请求数据; 内部调度所有的打印任务,计算filter链,任务和打印机状态的流转。以用WPS打印一个文件sample.pdf为例:

  1. WPS发送一个ipp请求,该请求包含了打印机的名称,打印参数(A4纸等),要打印的文件等描述信息。
  2. cupsd收到打印请求后, 解析请求并把生成一个打印机对应的job,加入到打印队列中,最后发送响应报文。至此一对请求响应完成。
  3. 主循环对队列中的job依照规则处理。cupsd将计算出一个cost最小的filter链,并逐个调用链中的每一个filter

filter 打印机驱动程序

filter是将文件内容及打印参数转换为打印机语言的核心部件。一般来说,一个filter能够将A类型转换为B类型,命名为AtoB。

将打印的文件转换为打印机语言,可能需要多个filter才能完成转换,从而形成了filter链。

例如:打印test.pdf文件,需要完成的转换为test.pdf — > test.ps ; 实际的转换过程为

test.pdf --- > test.typeA --- >test.typeB --- > test.ps

需要经历3个filter的处理,依次是pdftoA , AtoB, Btops。filter链处理完成后,将数据流发送给后端(backend)。

backend 数据传输后端

负责把filter输出的数据透传给具体的打印机,是cups中直接跟打印机通信的组件;

根据打印机跟电脑的连接接口不同,分成了usb数据后端,并口数据后端,串口数据后端,网络数据后端等。

可根据打印机的URI来确定它使用的是哪一个后端,例如:

  • usb://Lenovo/G331DN%20series?serial=MP60002214
  • hp:/usb/HP_LaserJet_Professional_P1108?serial=000000000Q8D7TPQPR1a (实际是USB连接电脑)cups-pdf:/
  • socket://10.20.12.241
  • file:// (没有对应的backend)
  • lpd://192.168.235.50/HPM126

backend还有一个重要的作用就是发现可用的打印机。常用命令:lpinfo -v

有时,发现打印机和给打印机发数据使用的不是同一个后端。

比如,网络打印机有的使用snmp发现,但URI却是socket://。

添加打印机后,可在“打印管理器”——“打印机”——“属性”中查看。


20 Linux打印服务CUPS原理
20 Linux打印服务CUPS原理

打印机驱动

打印机驱动程序由打印机特有的一个或多个过滤器组成。

过滤器将一般的文件格式(如位图)转换为打印机格式(如HP-PCL)。

除了过滤器程序外,每个驱动程序还包括PostScript打印机说明文件(PPD为后缀的文件)。这种文件说明了打印机的特性、选项和功能。

image

  • 安装打印机驱动,就是向系统中添加filter文件和PPD文件。
  • 添加打印机,就是选择合适的filter文件和对应的PPD文件。

打印机驱动获取

部分打印机驱动下载地址列表如下:

品牌 驱动网站
惠普 https://support.hp.com/cn-zh/drivers/printers
佳能 https://www.canon.com.cn/supports/download/sims/search/index
理光 https://www.ricoh.com.cn/download
兄弟 http://www.95105369.com/Web/Index.aspx
柯尼卡美能达 https://www.konicaminolta.com.cn/support/drivers/index.html
日冲 https://www.oki.com/cn/printing/support/drivers-and-utilities/flatbed/index.html
京瓷 https://www.kyoceradocumentsolutions.com.cn/support/mfp/download/
立思辰 https://www.cgprintech.com/Driver_Download.html?companfileCateId=1
奔图 https://www.pantum.cn/support/download/driver/
光电通 https://www.toec.com/download.html
UOS适配清单 https://ecology.chinauos.com/
开源驱动 https://openprinting.org/printers/

整理不易,感谢打赏
image

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/32407.html

(0)
上一篇 2023-11-22 18:33
下一篇 2023-11-24 13:00

相关推荐

发表回复

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

关注微信