编辑
2024-09-18
漫漫打工路
00
请注意,本文编写于 61 天前,最后修改于 61 天前,其中某些信息可能已经过时。

目录

📢 (Linux)学会用CUPS管理打印机
一、CUPS 简介:
二、使用 Web 界面管理打印机:
三、使用 system-config-printer 应用程序管理打印机:
四、使用 CUPS 命令行管理打印机
五、将文件打印到pdf

学而时习之,不亦乐乎。

CUPS管理打印机

📢 (Linux)学会用CUPS管理打印机

一、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)和网络打印机打印,打印机可以从一台计算机共享到另一台计算机,甚至可以通过互联网共享!

  1. System V 和 Berkeley 命令行: 这些命令包括新的 CUPS 打印命令以及之前由 LP 打印服务使用的一些打印命令。

  2. Web 界面: 可以打开 http://localhost:631来访问打印机管理工具,并管理服务器上的打印机、类和作业。

  3. 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

二、使用 Web 界面管理打印机:

如下就是 CUPS 的 Web 界面首页,其中 Administration 菜单可以添加管理打印机,也可以添加打印类,Classes可以管理打印类,Jobs可以管理打印工程,Printers可以管理系统中已经添加的打印机。Web 界面管理打印机非常方便。http://localhost:631/

image.png

三、使用 system-config-printer 应用程序管理打印机:

终端输入 sudo system-config-printer (如果没有此命令可通过 sudo apt install system-config-printer 来安装)即可调出下面的应用程序终端,从而方便的管理打印机。

image.png

四、使用 CUPS 命令行管理打印机

  1. 使用 lpinfo 列出可用的打印机或者驱动
sh
lpinfo -v # 列出可用打印机设备 lpinfo -m # 列出可用打印机驱动(模型)
  1. 使用 lpadmin 命令和正确的 URI 来添加打印机: 在使用具体的 lpadmin 命令前,先理解一下什么是正确的 URI,我们大概也知道,IPP 是 CUPS 本机支持的唯一协议,大多数网络打印机和打印服务器都支持 IPP。IPP 通过端口 631 支持加密和其他安全功能,并使用 http(Windows)、ipp 和 ipps 后端。这些后端的设备 URI 如下所示:
sh
http://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 添加打印机的命令语法:

sh
lpadmin -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 地址所在的打印机的命令(两条命令都可以):

sh
lpadmin -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 ,需要深入了解也可查看帮助文档

  1. 使用 lpadmin -x 命令删除打印机
sh
lpadmin -x printername
  1. 使用 lpoptions 命令显示或设置打印机选项和缺省值
sh
lpoptions -d printer-name # 设置默认打印机
  1. 使用 lplpr 命令来打印文件

CUPS 提供 System V 的 lp 命令和 Berkeley 的 lpr 命令来打印文件,且 lp 和 lpr 命令都支持驱动程序的打印选项。

CUPS 可识别多种类型的图像文件以及 PDF、PostScript 和文本文件,因此您可以直接使用命令来打印这些文件,而无需通过应用程序。

1)将文件打印到默认打印机

sh
lp filename lpr filename

2)将文件打印到指定打印机

sh
lp -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毫米)

举个例子:

sh
lp -o media=A4 -o sides=one-sided filename.doc # 单面打印到 A4 纸 lpr -o media=A4 -o resolution=600dpi filename.doc

再举自定义打印图片的例子:

sh
lp imagename.png # 默认自适应页面打印图片 lp -o scaling=50 imagename.png # 缩放至50%的页面大小打印图片 lp -o page-left=72 -o page-right=72 imagename.png # 左右边距分别设置为1英寸,自适应打印图片

4)lp和lpr命令还支持从标准输入打印:

sh
echo 'haha' | lp
  1. 使用 lpstat 命令来查看打印机状态

许多系统将有不止一台打印机可供用户使用。 这些打印机可以通过并行、串行或 USB 端口连接到本地系统,也可以通过网络使用。 使用 lpstat 命令查看可用打印机列表:

标题含义
-r查看是否有打印机运行
-p查看打印机是否空闲,启用或禁用时间;后面跟打印机名称,则只查看指定打印机信息。
-d查看默认打印机名称。
-v查看打印机名称和什么设备联系在一起。
-t显示CUPS的相关状态(包括所有打印机的状态)信息,例如打印机是否处于活动状态以及是否接受打印机请求。
sh
lpstat -d # 查看默认打印机名称 lpstat -r # 查看是否有打印机运行
  1. 使用 lpq 查看打印机队列
sh
lpq

为使 CUPS 管理打印环境,须先在 CUPS 下创建一个打印队列。打印队列可以指向通过 USB 端口或并行端口直接连接到系统的打印机,也可以指向网络打印机、Internet 打印机或多个打印机,具体取决于您配置应用程序的方式。无论队列指向何处,系统对待打印队列的方式与任何其他打印机相同。

五、将文件打印到pdf

首先,安装PDF虚拟打印机

sh
sudo apt install printer-driver-cups-pdf

系统会自动安装一个名为 PDF 的虚拟打印机,接下来,只需要将目标打印机选择为PDF进行打印即可。

sh
lp -d PFD imagename.png # 或者 lpr -P PDF imagename.png

生成的pdf文件位于 ~/PDF 目录内,用这个功能来测试打印命令很直接,也省纸张(不过,有时候同样的参数,但 PDF 打印和真实打印机打印的结果不一致)。


More info call: 18375066036

本文作者:木白非白

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!