最近公司需要做一个基于linux打印服务cups(common unix printer system)来实现打印数据的过滤。在这里就不详细介绍什么是cups了,博客里有一大堆关于cpus的说法和配置。但是之前对linux打印业务流程和基本功能实现没有过了解,其他人也没有接触过这些东西,没办法只能一切从零开始。最开始的时候也时找网上找博客找了很久感觉内容都太过相识,相关的资料太少,慢慢了摸索了两天发现基本上都没有基于cups的开发,基本上都是直接使用cups原始提供的功能,没有基于源码的开发。说了这么多废话那么下面就开始本文的主要内容:cups设计说明的介绍。
介绍:
Scheduler:
调度程序是一个HTTP / 1.1和IPP / 2.1服务器应用程序,用于管理系统上的HTTP和IPP请求,打印机,类,作业,订阅和通知。HTTP用于正常的Web浏览器服务以及通过具有application/ipp
内容类型的HTTP POST请求传递的IPP操作消息。调度程序使用基于公共网关接口(“CGI”)的一系列帮助应用程序来提供动态Web接口,并且可以配置为为Web接口运行其他站点特定的程序或脚本。
调度程序设计为传统的单线程服务器进程,运行外部进程来执行长期操作,如打印,通知,设备/驱动程序枚举和远程打印机监视。外部进程通常作为非特权帐户(“lp”)运行,并且在某些平台上还有额外的限制,限制了进程允许执行的操作。
同时支持的客户端和打印作业的最大数量主要受可用服务器内存,文件描述符和CPU的限制 - 调度程序本身没有强制限制。
Config Files:
Job Files:
调度程序将作业文件存储在假脱机目录中,通常是/ var / spool / cups。两种类型的文件将在假脱机目录中找到:控制文件开头的字母“c”(“C00001”,“c99999”,“c100000”等)和数据文件开头的字母“d”(“d00001 -001“,”d99999-001“,”d100000-001“等)控制文件是基于原始IPP Print-Job或Create-Job消息的IPP消息,而数据文件是提交的原始打印文件打印。系统已知的每个作业都有一个控制文件,每个作业有0个或多个数据文件。控制文件通常在第500个作业提交后被清除,数据文件在作业成功打印后立即被删除。这两种行为都可以配置。
Log Files:
Berkeley Command:
CUPS提供Berkeley Ipc(8),Ipq(1),Ipr(1)和Iprm(1)命令。一般而言,它们的功能与原来的伯克利命令相同,但有以下几点例外:
- 该LPC命令目前仅支持“状态”子命令。
- 所述LPR命令不支持的格式修饰符选项“1”(TROFF字体集1), “2”(TROFF字体集2), “3”(TROFF字体集3), “4”(TROFF字体集4), “c”(CIFPLOT),“d”(DVI),“f”(FORTRAN),“g”(GNU标绘),“i”(缩进),“n”(Ditroff) ,“t”(Troff)或“w”(宽度),因为它们不映射到基于IPP MIME媒体类型的文档格式。
System V Commands:
- 所有的命令都可能要求输入密码。System V打印假脱机程序需要root权限才能执行管理任务,而CUPS允许更灵活的配置。
- 所述的lpadmin命令不实现的Solaris “-A”(警报), “-F”(故障恢复) “-M”(安装形式/车轮), “-P”(纸张列表), “-S”(打印轮子),“-T”(类型列表),“-U”(拨号器信息),“-W”(等待),“-f”(表格名称),“-l”(内容类型列表), “-s”(远程打印机)或“-t”(托盘数量)选项。
CUPS Commands:
CUPS提供cupsaccept(8) ,cupsaddsmb(8) ,cupsdisable(8) ,cupsenable(8) ,cupsreject(8) ,cupstestppd(1) ,lpinfo(8) ,和(1)lppasswd命令。The cupsaccept, cupsdisable,cupsenable和cupsreject命令为了匹配System V中的accept,disable,enable,和reject命令 已被重新命名,以避免与混乱和冲突 的bash(1) 的内部 使 相同名称的命令。LPD Suppot:
Web Interface:
Notifiers:
CUPS_SERVERBIN/notifier/foo recipient user-dataCUPS包括两个通知程序: mailto 提供基于SMTP的电子邮件通知和 rss 以提供来自调度程序的真正简单联合(“RSS”)通知。其他通知程序可以根据需要安装在 通知程序 目录中以支持其他方法。
Filters:
过滤器(filter(7))将作业文件转换为可打印的格式。根据需要运行多个过滤器,将作业文件格式转换为可打印的格式。如果提供文件名,过滤器程序将从标准输入或文件读取。所有过滤器必须支持一组常用选项,包括打印机名称,作业ID,用户名,职位名称,副本数量和作业选项。所有输出都发送到标准输出。
CUPS提供用于打印文本,PostScript,PDF,HP-GL / 2和许多类型图像文件的过滤器。CUPS还为HP-PCL,ESC / P和多种类型的标签打印机提供打印机驱动程序过滤器。可以通过mime.convs和PPD文件向CUPS注册其他过滤器。
Port Monitors:
Backends:
后端(backend(7))将打印数据发送到打印机,并根据需要枚举可用的打印机/设备。后端使用与过滤器相同的界面(接口)。
CUPS包括用于AppSocket(JetDirect),IPP,LPD和USB连接的后端以及用于发现的DNS-SD和SNMP的后端。可以根据需要添加其他后端,而无需其他配置。