学而时习之,不亦乐乎。
CUPS管理打印机
CUPS 是苹果公司为 macOS® 和其他 UNIX® 类操作系统开发的基于标准的开源打印系统。CUPS 使用 Internet 打印协议 (Internet Printing Protocol, IPP) 来管理打印机、打印请求和打印队列。
提示
IPP 是网络打印的标准协议。与其他基于 IP 的协议类似,可以在本地或通过 Internet 使用 IPP 与远程打印机进行通信。但与其他协议不同的是,IPP 还支持访问控制、验证和加密,从而使其成为比其他协议强大且安全许多的打印解决方案。 IPP 位于超文本传输协议 (Hypertext Transfer Protocol, HTTP) 的顶层。HTTP 是 Internet 中的 Web 服务器的基础协议。使用 IPP 时,您可以验证打印机或服务器的状态信息、管理打印机以及通过浏览器打印作业。CUPS 是基于 IPP/1.1 的完整打印系统,它提供基本的摘要本地证书验证,以及基于用户、域或 IP 的访问控制。
CUPS 使用 PPD(PostScript 打印机描述)文件来描述打印机所需的打印机功能和驱动程序(自2009年以来,几乎所有现代网络打印机都使用无处不在的PPD)。CUPS 内置了一些样本驱动程序支持许多 Dymo、EPSON、HP、Intellitech、OKIDATA 和 Zebra 打印机。还有更多驱动程序可从网上获取,有时也可从打印机附带的驱动程序光盘中获取。
CUPS 提供 System V 和 Berkeley 命令行界面、Web 界面和 C API 来管理打印机和打印任务。它支持本地(并行、串行、USB)和网络打印机打印,打印机可以从一台计算机共享到另一台计算机,甚至可以通过互联网共享!
注
System V 和 Berkeley 命令行: 这些命令包括新的 CUPS 打印命令以及之前由 LP 打印服务使用的一些打印命令。
Web 界面: 可以打开 http://localhost:631来访问打印机管理工具,并管理服务器上的打印机、类和作业。
C API: 在终端窗口中键入 system-config-printer 命令可调出以 C API 作为接口的打印机管理应用程序。
相关信息
CUPS 学习资源:
CUPS 官方网站:https://www.cups.org/
CUPS 源码gitee:https://gitee.com/mirrors/cups
ORACLE CUPS 文档:https://docs.oracle.com/cd/E26926_01/html/E25812/cups-1.html#scrolltoc
如下就是 CUPS 的 Web 界面首页,其中 Administration 菜单可以添加管理打印机,也可以添加打印类,Classes可以管理打印类,Jobs可以管理打印工程,Printers可以管理系统中已经添加的打印机。Web 界面管理打印机非常方便。http://localhost:631/
终端输入 sudo system-config-printer
(如果没有此命令可通过 sudo apt install system-config-printer
来安装)即可调出下面的应用程序终端,从而方便的管理打印机。
lpinfo
列出可用的打印机或者驱动shlpinfo -v # 列出可用打印机设备
lpinfo -m # 列出可用打印机驱动(模型)
lpadmin
命令和正确的 URI 来添加打印机:
在使用具体的 lpadmin
命令前,先理解一下什么是正确的 URI,我们大概也知道,IPP 是 CUPS 本机支持的唯一协议,大多数网络打印机和打印服务器都支持 IPP。IPP 通过端口 631 支持加密和其他安全功能,并使用 http(Windows)、ipp 和 ipps 后端。这些后端的设备 URI 如下所示:shhttp://ip-address-or-hostname:port-number/printers/name/.printer ipp://ip-address/ipp/print ipp://ip-address-or-hostname/printers/name ipps://ip-address/ipp/print ipps://ip-address:443/ipp/print ipps://ip-address-or-hostname/printers/name
接下来看看 lpadmin
添加打印机的命令语法:
shlpadmin -p printername -E -v device-uri -m ppd-name
提示
-p printername 设置打印机名称
-E 加密和启用目标并接受作业
-v device-uri 指定需要连接打印机的ipp 或者 ipps URI
-m ppd-name 则是指定模型目录或驱动程序接口,从而为打印机设置标准PPD文件,可以用 -m everywhere 来自动查询指定 ipp 或者 ipps URI 所引用打印机的驱动程序
如下就是添加局域网内 102.168.0.101 地址所在的打印机的命令(两条命令都可以):
shlpadmin -p myprint -E -v ipp://192.168.0.101/ipp/print -m everywhere lpadmin -p myprint -E -v ipps://192.168.0.101/ipp/print -m everywhere
注
CUPS 支持大多数使用基于 TCP/IP 协议的网络打印机,除了上面提到的 IPP 协议 (互联网打印协议)外,还支持 AppSocket 协议和 lpd (行式打印机守护进程)协议。比如,一些老式打印机,通常使用的就是 socket 或者 lpd URI ,需要深入了解也可查看帮助文档
lpadmin -x
命令删除打印机shlpadmin -x printername
lpoptions
命令显示或设置打印机选项和缺省值shlpoptions -d printer-name # 设置默认打印机
lp
或 lpr
命令来打印文件CUPS 提供 System V 的 lp 命令和 Berkeley 的 lpr 命令来打印文件,且 lp 和 lpr 命令都支持驱动程序的打印选项。
注
CUPS 可识别多种类型的图像文件以及 PDF、PostScript 和文本文件,因此您可以直接使用命令来打印这些文件,而无需通过应用程序。
1)将文件打印到默认打印机
shlp filename lpr filename
2)将文件打印到指定打印机
shlp -d destination-printer filename # 或者 `lpr -P destination-printer filename`
-d
指定目标打印机,destination-printer
表示目标打印机名称,filename指定要打印的文件名。
打印选项:
标题 | 含义 |
---|---|
-d destination-printer | 打印到目标打印机(注意:lpr 指定打印机命令用的是 -P 选项) |
-n N | 打印份数 |
-q n | 打印优先级,n 的取值范围是 1-100,默认优先级为 50 |
-t “name” | 设置打印作业名称 |
-o 参数=值 | 设置打印作业选项(见下面) |
---|---|
3)可以使用 -o
参数来指定打印作业选项
标题 | 含义 |
---|---|
-o media=size | 设置纸张大小、类型、或者源(见下) |
-o media=Custom.WIDTHxLENGTH | 自定义纸张大小(如7x7,7x7in,7x7cm,7x7mm) |
-o orientation-requested=3 | 设置纸张为纵向(不旋转)(portrait) |
-o orientation-requested=4 | 设置纸张为横向(旋转90度)(landscape) |
-o orientation-requested=5 | 设置纸张为横向或海景反向(旋转270度) |
-o orientation-requested=6 | 设置纸张为反向纵向或倒置(旋转180度) |
-o page-border=top,bottom,left,right | 设置页边距 |
-o page-left=N | 设置左边距为 N 点(1英寸=72点=2.54cm) |
-o page-right=N | 设置右边距为 N 点 |
-o page-top=N | 设置上边距为 N 点 |
-o page-bottom=N | 设置下边距为 N 点 |
-o print-quality=N | 设置纸张质量 - 低质量 (3), 标准 (4), 高质量 (5) |
-o fit-to-page | 缩放打印文件以适合页面 |
-o scaling=N | 缩放图片文件(文本文件无效)至页面的N%,N>100时,会打印到多个页面 |
-o sides=one-sided | 设置单面打印(默认) |
-o sides=two-sided-long-edge | 设置双面长边打印 |
-o sides=two-sided-short-edge | 设置双面短边打印 |
-o page-ranges=pages | 选择打印页面,pages的写法如:1,2-4,5 |
-o number-up=N | 每页打印版数 |
-o cpi=N | 每英寸打印文本文件时使用的字符数(字体拉宽),默认是10 |
-o lpi=N | 每英寸打印文本文件时使用的行数(字体拉长),默认是6 |
-o media=size
中的size参考值:
Letter - US Letter
(8.5x11 inches, or 216x279mm) - 美国字母(8.5 x11英寸,或216x279毫米)
Legal - US Legal
(8.5x14 inches, or 216x356mm) - US Legal (8.5 x14英寸,或216x356毫米)
A4 - ISO A4
(8.27x11.69 inches, or 210x297mm) - ISO A4(8.27 x11.69英寸,或210x297毫米)
COM10 - US #10 Envelope
(9.5x4.125 inches, or 241x105mm) - 美元10英镑信封(9.5 x4.125英寸,241x105毫米)
DL - ISO DL Envelope
(8.66x4.33 inches, or 220x110mm) - ISO DL 封套(8.66 x4.33英寸,或220x110毫米)
举个例子:
shlp -o media=A4 -o sides=one-sided filename.doc # 单面打印到 A4 纸
lpr -o media=A4 -o resolution=600dpi filename.doc
再举自定义打印图片的例子:
shlp imagename.png # 默认自适应页面打印图片
lp -o scaling=50 imagename.png # 缩放至50%的页面大小打印图片
lp -o page-left=72 -o page-right=72 imagename.png # 左右边距分别设置为1英寸,自适应打印图片
4)lp和lpr命令还支持从标准输入打印:
shecho 'haha' | lp
许多系统将有不止一台打印机可供用户使用。 这些打印机可以通过并行、串行或 USB 端口连接到本地系统,也可以通过网络使用。 使用 lpstat 命令查看可用打印机列表:
标题 | 含义 |
---|---|
-r | 查看是否有打印机运行 |
-p | 查看打印机是否空闲,启用或禁用时间;后面跟打印机名称,则只查看指定打印机信息。 |
-d | 查看默认打印机名称。 |
-v | 查看打印机名称和什么设备联系在一起。 |
-t | 显示CUPS的相关状态(包括所有打印机的状态)信息,例如打印机是否处于活动状态以及是否接受打印机请求。 |
shlpstat -d # 查看默认打印机名称
lpstat -r # 查看是否有打印机运行
shlpq
注
为使 CUPS 管理打印环境,须先在 CUPS 下创建一个打印队列。打印队列可以指向通过 USB 端口或并行端口直接连接到系统的打印机,也可以指向网络打印机、Internet 打印机或多个打印机,具体取决于您配置应用程序的方式。无论队列指向何处,系统对待打印队列的方式与任何其他打印机相同。
首先,安装PDF虚拟打印机
shsudo apt install printer-driver-cups-pdf
系统会自动安装一个名为 PDF 的虚拟打印机,接下来,只需要将目标打印机选择为PDF进行打印即可。
shlp -d PFD imagename.png # 或者 lpr -P PDF imagename.png
生成的pdf文件位于 ~/PDF 目录内,用这个功能来测试打印命令很直接,也省纸张(不过,有时候同样的参数,但 PDF 打印和真实打印机打印的结果不一致)。
More info call: 18375066036
本文作者:木白非白
本文链接:
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!