1、打印机的组成:
打印机有自己的CPU、内存、操作系统甚至硬盘,如果是一台网络打印机的话,那么它还应该运行着自己的web服务器,用户可以访问其网站进行配置和管理。
2打印机的语言:
打印机使用页面描述语言(Page Description Language,PDL)对要进行打印的页面进行描述。
经过PDL编码的页面可以提供比原始图像更小的数据量、更大的传输速度。而且,PDL可以实现与设备和分辨率无关的页面描述。
主流的PDL:PostScript、PCL5、PCL6、PDF。
PostScript是linux上最常见的PDL,几乎所有的页面布局程序都可以生成PostScript。
3、打印机的工作过程:
当用户在应用软件中按下“打印”按钮时,就给打印机发送了一个打印作业。打印机接收到用PDL描述的作业后,会调用自己的光栅图像处理器把这个文件转换成位图形式,这个过程叫做“光栅图像处理”。打印机接收到这个位图之后就可以进行打印了。一些打印机可以理解几乎所有的主流PDL,另一些则什么都理解不了。后一种打印机称为GDI打印机,它们需要依赖计算机做光栅处理,然后接收现成的位图图像。
4、打印机驱动:
打印机的驱动程序并不能算真正意义上的“驱动程序”,因为它和硬件驱动没有太大的关系。把文件转化为打印机所能理解的PDL,这是打印机驱动程序所要做的全部事情。
5、CUPS:
CUPS是公共UNIX打印系统(Comon UNIX Printing System)的缩写形式。
CUPS基于服务器/客户机架构。
CUPS使用HTTP协议来管理打印任务,通过使用浏览器访问主机的631端口可以打开这个管理界面。在地址栏中输入http://localhost:631,并按下Enter键。
6、打印机的选择:
在选择一款打印机前,应该首先去了解一下这款产品可以在linux下得到多大程度的支持。最直接的方法是访问www.linuxprinting.org的Foomatic数据库,这个数据库将打印分成从Paperweight到Perfectly的4个等级。毫无疑问,Pefectly类的打印机可以在linux下获得最好的支持,用户应该尽可能地选择这一类。
7、CUPS是如何识别打印机的?
当用户给CUPS布置打印任务的时候,CUPS理应知道当前连接的打印机所使用的PDL及打印机所能提供的各项功能。所有的这些信息都包含在打印机的PPD文件中。PPD代表PostScript Printer Description,即PostScript打印机描述。这个文件记录了打印机的各项参数和功能、CUPS过滤器,以及其他平台上的打印机驱动程序,据此判断如何把打印作业发送给PostScript打印机。如今,每一台PostScript打印机都提供有特定的PDD文件,这通常可以在安装光盘找到。
对于CUPS而言,非PostScript打印机同样可以使用PDD文件来描述。只要找到某台打印机的PDD文件,CUPS就能够驱动它,至少从理论上讲是这样。
8、如何寻找特定打印机的PDD文件?
linuxprinting.org提供了大量这样的PDD文件。用户要做的只是把打印机对应的PDD文件下载下来,然后复制到CUPS的目录中去。通常,这个目录是/usr/share/cups/model(Ubuntu是/usr/share/ppd)。
有时候找到的PPD文件可能是某一类打印机的通用PPD文件,因此并不能发挥打印机的全部功能。但至少要比没有的强。
9、配置打印机:
lpoptions -d N7400 #将N7400设置为当前用户的默认打印机。
lpr example.pdf #将example.pdf文件打印。
只要简单地给lpr命令传递一个文件名作为参数,CUPS会使用默认打印机打印这个文件。如果连接了多台打印机,那么可以使用-P选项指定使用哪一台打印机打印文档。例如,下面的这条命令明确指定使用N7400打印文件example.pdf。
lpr -P N7400 example.pdf
10、CUPS的配置文件:
CUPS的配置文件叫做cupsd.conf,通常保存在/etc/cups目录下。这是一个文本文件,可以使用more或者less命令查看其内容。
less /etc/cups/cupsd.conf
这个文件中,Listen localhost:631表示CUPS在631端口提供服务。
CUPS可以向网络上的其他主机提供服务,要让CUPS接受来自其他主机的打印作业,应该在cupsd.conf中找到下面的这几行:

Order allow,deny

把他们替换为下面这种形式。其中,netaddress应该替换为网络的IP地址。

Order allow,deny
Deny from all
Allow from 127.0.0.1
Allow from netaddress

这几行的含义:Deny from all表示CUPS不接受任何主机的打印请求。但紧跟着的两行定义了两种例外:Allow from 127.0.0.1和Allow from netaddress允许来自本机(127.0.0.1)和netaddress的计算机使用打印服务。
为了让网络上的主机可以看到CUPS服务器正在提供的打印服务,那么还应该找到下面这一行:
BrowseAddress @LOCAL
将其修改成:
BrowseAddress broadcastAddress:631
其中,broadcastAddress应该替换为网络的广播地址(如10.71.84.255)。全0和全1的主机地址呗保留作为网络地址和广播地址。
保存配置文件后,重新启动CUPS服务器使修改生效:
sudo /etc/init.d/cups restart
11、设置打印机的类:
添加打印机的类,可以用lpadmin命令,下面的两条命令创建打印机的类office,并把打印机N7400和zoe加入这个类。
lpadmin -p N7400 -c office
lpadmin -p zoe -c office
从类中删除一台打印机,使用-r选项:
lpadmin -p zoe -r office
删除类和打印机使用-x选项:
lpadmin -x zoe #删除打印机zoe
lpadmin -x office #删除打印机类office
12、打印机队列:
lpq可以从CUPS服务器那里查询到当前打印作业的状态信息。
lpq中的第3列为报告的作业号。要删除一个打印作业,可以使用lprm命令提供作业号作为参数。
例如:lprm 5 #删除作业号为5的打印作业。
13、打印机的状态:
可以使用lpstat -t命令显示当前CUPS的状态信息。