CUPS 是一种模块化开源打印系统,使用 Internet 打印协议 (Internet Printing Protocol, IPP) 作为基础来管理打印机、打印请求和打印队列。CUPS 支持网络打印机浏览和基于 PostScript 打印机描述的打印选项。CUPS 还提供了跨越本地网络的公共打印接口。
IPP 是网络打印的标准协议。与其他基于 IP 的协议类似,可以在本地或通过 Internet 使用 IPP 与远程打印机进行通信。但与其他协议不同的是,IPP 还支持访问控制、验证和加密,从而使其成为比其他协议强大且安全许多的打印解决方案。IPP 位于超文本传输协议 (Hypertext Transfer Protocol, HTTP) 的顶层。HTTP 是 Internet 中的 Web 服务器的基础协议。使用 IPP 时,您可以验证打印机或服务器的状态信息、管理打印机以及通过浏览器打印作业。CUPS 是基于 IPP/1.1 的完整打印系统,它提供基本的摘要本地证书验证,以及基于用户、域或 IP 的访问控制。
CUPS 包括对动态打印机检测和分组的支持。CUPS 会将 lpr 命令替换为自己的命令,将 LPD 打印机驱动程序替换为自己的打印驱动程序。CUPS 与 LP 打印服务的相似之处在于,它也使用 PostScript 格式作为其页面说明底层语言。由于 CUPS 提供 System V 和 Berkeley 打印命令,因此用户和应用程序可以打印到 CUPS 队列,只需稍微更改之前使用的选项或根本无需更改。
最后,CUPS 还包括由许多开源应用程序和工具包使用的应用程序级别界面。在后端,CUPS 包括用于处理带注释的光栅图像格式 (raster image format, RIP) 所需的界面。对此格式以及这些界面的支持已集成到其他关键开源打印驱动程序技术中。
1).CUPS 命令行实用程序: 这些命令包括新的 CUPS 打印命令以及之前由 LP 打印服务使用的一些打印命令。
2).CUPS Web 浏览器界面: http://localhost:631。
3).CUPS 打印管理器GUI: 在终端窗口中键入 system-config-printer 命令来访问此 GUI。
为使 CUPS 管理打印环境,您必须先在 CUPS 下创建一个打印队列。打印队列可以指向通过 USB 端口或并行端口直接连接到系统的打印机。但是,队列也可以指向网络打印机、Internet 打印机或多个打印机,具体取决于您配置应用程序的方式。无论队列指向何处,系统对待打印队列的方式与任何其他打印机相同。
CUPS 服务是通过以下两种新的服务管理工具 (Service Management Facility, SMF) 服务提供的:
svc:/application/cups/scheduler
该服务管理 cupsd 守护进程。此守护进程提供包括排队、过滤、假脱机、通知、IPP 支持、设备枚举以及 Web 管理的基本打印服务。
svc:/application/cups/in-lpd
该服务运行 cupsd-lpd 守护进程。此守护进程为 CUPS 服务提供基本的 RFC-1179(LPD 协议)支持。
通过打印机管理配置文件和 solaris.smf.manage.cups 授权,没有 root 登录权限的用户也可以管理这些 SMF 服务。
许多系统将有不止一台打印机可供用户使用。 这些打印机可以通过并行、串行或 USB 端口连接到本地系统,也可以通过网络使用。 使用 lpstat命令查看可用打印机列表:
$ lpstat [选项]
选项 含义
-p 查看打印机是否空闲,启用或禁用时间;后面跟打印机名称,则只查看指定打印机信息。
-d 查看默认打印机名称。
-v 查看打印机名称和什么设备联系在一起。
-t 显示CUPS的相关状态(包括所有打印机的状态)信息,例如打印机是否处于活动状态以及是否接受打印机请求。
演示:
hollowman@hollowman-F117:~$ lpstat -p
打印机 HP_LaserJet_MFP_M72625dn_ 目前空闲。从 2021年08月06日 星期五 14时08分42秒 开始启用
hollowman@hollowman-F117:~$ lpstat -d
系统默认目标:HP_LaserJet_MFP_M72625dn_
hollowman@hollowman-F117:~$ lpstat -v
用于 HP_LaserJet_MFP_M72625dn_ 的设备:ipp://HP%20LaserJet%20MFP%20M72625dn%20(NPIFC1C44)._ipp._tcp.local/
hollowman@hollowman-F117:~$ lpstat -t
调度器正在运行
系统默认目标:HP_LaserJet_MFP_M72625dn_
用于 HP_LaserJet_MFP_M72625dn_ 的设备:ipp://HP%20LaserJet%20MFP%20M72625dn%20(NPIFC1C44)._ipp._tcp.local/
HP_LaserJet_MFP_M72625dn_ 自从 2021年08月06日 星期五 14时08分42秒 开始接受请求
打印机 HP_LaserJet_MFP_M72625dn_ 目前空闲。从 2021年08月06日 星期五 14时08分42秒 开始启用
$ lpoptions -d printer-name
演示:
hollowman@hollowman-F117:~$ lpoptions -d HP_LaserJet_MFP_M72625dn_
copies=1 device-uri=ipp://HP%20LaserJet%20MFP%20M72625dn%20(NPIFC1C44)._ipp._tcp.local/ finishings=3 job-cancel-after=10800 job-hold-until=no-hold job-priority=50 job-sheets=none,none marker-change-time=1628230122 marker-colors=#000000 marker-high-levels=100 marker-levels=67 marker-low-levels=5 marker-message=marker-message marker-names='Black Toner_S/N_:CRUM-190319A0685' marker-types=toner number-up=1 printer-commands=none printer-info=HP printer-is-accepting-jobs=true printer-is-shared=false printer-is-temporary=false printer-location='Local Printer' printer-make-and-model='LaserJet MFP M72625dn - IPP Everywhere' printer-state=3 printer-state-change-time=1628230122 printer-state-reasons=none printer-type=2273364 printer-uri-supported=ipp://localhost/printers/HP_LaserJet_MFP_M72625dn_
CUPS 可以直接理解许多不同类型的文件,包括文本、PostScript、PDF 和图像文件。 这允许您从应用程序内部或命令行打印,以最方便的方式打印!
将文件打印到系统上的默认打印机
$ lp filename
$ lpr filename
演示:
hollowman@hollowman-F117:~$ lp 1.txt
请求 ID 为 HP_LaserJet_MFP_M72625dn_-5(1 个文件)
将文件打印到选指定打印机
$ lp -d destination-printer filename
$ lpr -d destination-printer filename
-d
指定目标打印机,destination-printer
表示目标打印机名称,filename
指定要打印的文件名。
演示:
hollowman@hollowman-F117:~$ lp -d HP_LaserJet_MFP_M72625dn_ 1.txt
请求 ID 为 HP_LaserJet_MFP_M72625dn_-6(1 个文件)
lp
和lpr
命令还支持从标准输入打印:
$ program | lp
$ program | lp -d printer-name
$ program | lpr
$ program | lpr -P printer-name
演示:
hollowman@hollowman-F117:~$ echo 'haha' | lp
请求 ID 为 HP_LaserJet_MFP_M72625dn_-9(0 个文件)
$ lp [-o 选项值] printer-name
选项:
-o media=size 设置媒体大小、类型、或者源(见下)
-o orientation-requested=N 设置纸张旋转 portrait (3) or landscape (4) orientation
-o print-quality=N 设置纸张质量 - 低质量 (3), 标准 (4), 高质量 (5)
-o sides=one-sided 设置单面打印(默认)
-o sides=two-sided-long-edge 设置双面长边打印
-o sides=two-sided-short-edge 设置双面短边打印
-o media=size
中的size参考值:
演示:
hollowman@hollowman-F117:~$ lp -o media=A4,MultiPurpose 1.txt
请求 ID 为 HP_LaserJet_MFP_M72625dn_-9(0 个文件)