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中找到下面的这几行: <Location /> Order allow,deny </Location> 把他们替换为下面这种形式。其中,netaddress应该替换为网络的IP地址。 <Location /> Order allow,deny Deny from all Allow from 127.0.0.1 Allow from netaddress </Location> 这几行的含义: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的状态信息。