多年来,打印问题一直困扰着Unix,包括Linux。Unix和Linux没有合适的标准接口或系统来支持打印。Berkeley和System V 打印系统是从前通常采用的两种解决方案。不过在1999年随着CUPS的出现,这种局面得到改观,所有的Unix及Linux都可以使用此打印系统,以支持用户的各种打印需求。我们在本章会了解到Unix的传统打印方式,而着重的是新兴的CUPS打印系统。
【重点内容】
Ø Linux打印体系概述
Ø 打印机的设置
Ø 使用CUPS打印
Unix传统的打印系统支持逐行打印机(只能打印文本)或PostScript打印机(可打印文本和图形),而且通过一些设置,这些系统甚至可以支持各式各样的打印机和文件格式。但是由于Unix操作系统的每种变体都使用不同的打印系统,所以要为各种打印机和操作系统开发了打印机驱动程序相当困难。此外,由于每种Unix变体的用户数量有限,因而大多数打印机厂商完全放弃了对Unix的支持。
CUPS就是为了解决Unix的打印问题而设计的。所有的Unix变体都可以使用通用打印系统,以支持用户的各种打印需求。打印机厂商可以使用该系统的模块化过滤器接口开发驱动程序,而且只需极少量甚至根本无须更改,此驱动程序就可支持各种文件格式。因为CUPS既提供System V的打印命令,又提供Berkeley的打印命令,所以用户(和应用程序)不用进行任何改变即可享用这门新技术。
自1999年首次发布以来,CUPS已为许多Linux发行商所采用,而且一些打印机制造商也正在使用CUPS,以便为Linux提供基于CUPS的打印机驱动程序。
CUPS是一种供Unix以及Linux操作系统使用的打印系统通过这种打印系统,我们能够使用几乎任何类型的打印机打印文件。
16.1.1.1 IPP协议
CUPS以互联网打印协议(IPP)为基础。IPP是一种新型网络打印协议,它使我们能够在办公室里或世界上任何地方通过网络打印机进行本地或远程打印。IPP定义了打印、管理打印作业以及打印机选项(如纸张大小、分辨率等)的标准协议。
和所有以IP为基础的协议一样,IPP既可以在本地使用,也可以通过互联网同数百或数千英里之外的打印机一起使用。但是与其他协议不同的是,IPP还支持“验证”(保护打印机的口令)以及“访问控制”(只允许特定的机器或人访问打印机)。此外,IPP还支持“加密”(就是打乱打印数据,从而使窃听者无法识别这些数据)。这使得IPP比传统的LPD协议要健全和安全得多。
IPP是超文本协议(HTTP)的上层协议,HTTP是互联网上Web服务器的工作基础。用户可以查看文档、检查有关打印机或服务器的状态信息,以及使用Web浏览器(参见图1-1)管理打印机、类和作业。
CUPS提供了完整的基于IPP/1.1的打印系统。该系统包括Basic、Digest和本地认证验证、用户、域、基于IP的访问控制、128位加密。
CUPS还提供了标准打印命令,这些命令我们可能已经使用了好多年。此外,CUPS还含有Berkeley(lpr)和System V(lp)打印命令,当使用这些命令时应用程序无须更改即可正常运行。
16.1.1.2 IPP的客户机和服务器体系
IPP以客户机/服务器为基础。客户机的服务器通常位于同一台机器上。当打印文件时,此机器(或应用程序)就是客户机。服务器就是在后台运行的、用以打印文件的CUPS程序(参见图1-2)
16.1.1.3 CUPS打印中的一些术语
作业。提交打印的一个文件或一组文件被称为“作业”。作业有从1开始计数的惟一数字标志,并指定给特定的目的地(通常是打印机)。作业还可包含相关选项,例如纸张大小、份数优先级等。
类。CUPS支持打印机的集合,此集合称为“类”。发送给类的作业被转发给类中下一个可用打印机。这使我们能够将打印作业发送给一组类似(或完全相同)的打印机,并可在第一个空闲的打印机上打印,而不是等待所选打印机上其他人作业完成后才打印(参见图1-3)。
CUPS还支持特殊的implicit(隐式)类。隐式类和显式类的作用相同。但是,在多个服务器处理一台特定打印机机时,就会自动创建隐式类,隐式类可将打印作业转发给下一个可用服务器,因此即使一台服务器关闭了,也能够打印作业。
过滤器。即使打印机不支持文件的格式,用户或应用程序也可以通过过滤器打印文件。在发送给打印机之前,发送给CUPS服务器的打印作业要先经过过滤处理。过滤器将作业文件转换为打印机可以识别的格式。有些过滤器则执行页面选择和排序任务。CUPS提供了很多种过滤器,用以打印多种类型的图像文件、HP-GL/2文件、PDF文件和文本文件。CUPS还提供PostScript和图像文件栅格图像处理程序(RIP)过滤器。这个过滤器可将PostScript或图像文件转换为发送给栅格打印机驱动程序的位图文件。
16.1.1.4 CUPS的打印机驱动程序
打印机驱动程序由打印机特有的一个或多个过滤器组成。每个过滤器都呆将一般的文件格式(如位图)转换为打印机格式(如HP-PCL)。除了过滤器程序我,每个驱动程序还包括PostScript打印机说明(PPD)文件。这种文件说明了打印机的特性、选项和功能。
CUPS含有EPSON、Hewlett-Packard和Okidata打印机的示例打印机驱动程序。
来源 |
URL |
类型 |
说明 |
Easy Software Products |
http://www.easysw.com/printpro |
商业软件 |
支持大多数打印机制造商的数千种打印机驱动程序 |
GIMP-print project |
http://gimp-print.sourceforge.net |
自由软件 |
GIMP、Ghostscript和CUPS的打印机驱动程序。包括HP、EPSON、Lexmark和Canon打印机的驱动程序 |
CUPS-o-maitic |
http://www.linuxprinting.org |
自由软件 |
Ghostscript的封装驱动程序。为Ghostscript打印机驱动程序提供CUPS接口 |
EPSON |
http://www.ercipd.com/isv/linux/index/htm |
自由软件 |
CUPS的EPSON打印机驱动程序 |
Star Micronics |
http://www.starmicronics.com |
自由软件 |
CUPS的Star Micronics打印机驱动程序 |
16.1.1.5 后台程序
后台程序用于执行最重要的一项任务:它们将过滤后的打印数据发送给打印机。每个后台程序都会和打印机通信,从而将过滤后的打印数据(或原始打印文件)复制到打印机中,并将来自打印机的任何状态信息转发给CUPS服务器。后台程序一般不会过滤或转换打印数据。
CUPS提供多个后台程序,以通过并口、串口和USB端口进行打印,或者通过IPP、JetDirect(AppSocket)和逐行打印机守护程序(LPD)协议进行网络打印。
网络服务软件包还提供了可用设备的列表。在启动时,每个后台程序都要求提供它所支持的设备列表以及可用的任何信息。例如,并行后台程序可以告诉CUPS,EPSON Stylus Color600打印机已连接到并口1。
本地系统中的打印机和类也可供网络中的其他系统共享。将一个系统设置为其他所有人的打印机服务器或假脱机主机,用户就可以通过该系统进行打印。打印机可将打印机列表从服务器广播到客户机,这样打印机就可以供所有客户共享。
这种广播机制也是上述隐式类的工作基础。当客户机从多个服务器上收到有关具有同一名称的打印机的信息时,客户机就可自动将打印机与可用于打印的一个隐式类相结合。
通过这种方式,隐式类就可以方便地使各个服务器的负载达到均衡,而且如果其中一台或多台服务器停止运行,隐式类还可提供容错功能。
16.1.1.6 CUPS的图形界面
虽然CUPS没有标准的GUI界面,但它仍然有许多图形界面可供选用。下面列出一些可以选用的界面。
URL |
软件包 |
http://www.easyaw.com/printpro/ |
ESP Print Pro |
http://www.stud.uni-hannover.de/user/75439/gtklp/ |
GtkLP |
http://cups.sourceforge.net/kups/ |
KUPS |
http://cups.sourceforge.net/qtcups/ |
QtCUPS |
http://cups.sourceforge.net/xpp/ |
XPP |
Ø ESP Print Pro
ESP Print Pro是一个商业软件包。它提供有:管理类、作业和打印机的GUI;设置选项和打印文件的打印面板;屏幕/窗口硬拷贝程序。ESP Print Pro以FLTKA 工具包为基础。
Ø GtkLP
GtkLP是一个自由软件。它提供了以GUI打印和选项面板以打印文件。GtkLP以CTK+工具包为基础。
Ø KUPS
CUPS的KDE管理工具(KUPS)是一个自由软件。它提供了管理类、作业和打印机的GUI。KUPS以Qt工具包为基础。
Ø QtCUPS
QtCUPS是一个自由软件。它提供GUI打印和选项面板以打印文件。QtCUPS还提供Qt程序所用的库,以直接通过CUPS进行打印。QtCUPS以Qt工具包为基础。
Ø XPP
X Print Panel(XPP)是一个自由软件。它提供GUI打印和选项面析以打印文件。XPP以FLTK工具包为基础。
16.1.1.7 打印机设备
打印机队列拥有相关的设备。设备可以是并口、网络接口或后台程序支持的任何其他接口。CUPS中的设备使用统一资源标识符(URI),它是Web浏览器中使用的统一资源定位符(URL)的更通用的形式。例如,Linux中的第一个并口通常使用并行设备URL:/dev/lp0。
Ø 1.如何获取可用设备的列表
运行lpinfo命令后我们就会看到受支持设备的完整列表。
# lpinfo –v |
-v选项表示我们要得到可用设备的列表。每一行的第一个字是设备的类型(直接、文件、网络或串行)。其后是该设备的设备URL或模式名。文件设备具有file://directorey/filename形式的设备URL,而网络设备使用人们更为熟悉的scheme://server/path形式。
某些后台程序也支持选项。这些选项添加在URL末级,并以问号开头。在前面的设备列表中,串口URL中的?baud = 115200选项指定了该端口支持的最大波特率。我们还可以指定其他选项,如奇偶校验、数据位和流控制。
Ø 2.文件设备
文件设备打印机的打印文件以进行测试,或者将打印文件发送给设备或命名管道。文件的绝对路径被子添加到“file:”模式之后,形成设备URL:
file:/foo/bar/filename.prn
文件设备不支持任何选项。
注意:
在CUPS中,文件设备是作为内部设备实现的。这可防止我们使用打印机打印原始打印文件,这是因为没有合适的过滤器,以将打印作业真正复制给文件。
此外,文件设备还覆盖正常文件。由于调度程序通常以root身份运行,所以我们千万不要配置打印机而使其指向/etc/passwd之类的重要文件。
Ø HTTP和IPP设备
HTTP和IPP设备将打印作业发送给打印机或支持IPP的服务器。HTTP设备使用“http:”模式名处理URL,DMJ IPP使用“ipp”模式名处理URL。这些设备不支持设备URL中的任何选项。但不需要或只需要少量的改动,打印作业选项就可被传送给远程设备。
如果远程设备需要的话,在设备URL中还可嵌入用户名和口令:
http://username:password@server/path
http://username:password@server/path
CUPS服务器支持使用下列URL的打印机:
http://server/classes/name
http://server:port/classes/name
ipp://server/classes/name
ipp://server:port/classes/name
带有网络接口的打印机和外部网络打印服务器使用不同的URL。下表中概括了常用的URL:
网络打印机和打印机服务器常用的URL
制造商 URL
Axis ipp://server/LPT1(Parallet 1)
ipp://server/LPT2(Parllel 2)
ipp://s\erver/COM1(Serial 1)
HP ipp://server/ipp(Internal)
ipp://server/ipp/port1(Parallet 1)
ipp://server/ipp/port2(Parallet 2)
ipp://server/ipp/port3(Parallel 3.)
Microsof t ipp://server/printers/name
Tektronix ipp://server/ipp
Xerox ipp://server/ipp
对于Microsoft Windows 2000 HP服务器,URL中的name就是打印机的共享名。
如果在3-1表中找不到我们的打印机制造商,请查阅打印机服务器所带的文档。
LPD设备支持传统的逐行打印机守护协议。该协议在RFC1179中说明。Microsoft在TCP/IP Printing Service中实现了协议。
LPD设备使用的URL为:
lpd://server/name
此处name是远程打印机队列的名称。Windows NT服务器中的打印机队列名就是打印机的共享名。
LPD设备还支持若干选项:
选项 说明
Banner = no 告诉选程打印机不要打印标题页(默认)
Bannet = yes 告诉选程打印机要打印标题页
Format = c 告诉远程打印机打印文件是CalTech中间格式(CIF)
Format = d 告诉远程打印机打印文件是TeX dvi格式
Format = f 告诉远程打印机打印文件是文本文件
Format = g 告诉远程打印机打印文件是Berkeley Plot文件
Format = l 告诉远程打印机打印文件为适应打印机已进行了格式化(默认)
Format = n 告诉远程打印机打印文件夹含ditroff命令的输出
Format = o 告诉远程打印机打印文件是PostScript文件
Format = p 告诉远程打印机打印文件是文本文件,应像使用pr命令一样良好地打印此文件
Format = r 告诉远程打印机打印文件是FORTRAN程序的输出
Format = t 告诉远程打印机打印文件是troff程序的输出
Format = v 告诉远程打印机打印文件是Sun栅格格式的文件
Orde = control , data 首先将控制文件发送给远程打印机
Order = data , control 首先将数据文件发送给远程打印机(默认)
大多数LPD打印机只需要基本URL:
lpd://server/name
如果打印作业到达了打印机,但并不进行打印,则标题和顺序选项会纠正这种情形:
lpd://server/name?bannet=yes
lpd://server/name?order=control,data
lpd://server/name?banner=yes+order=control,data
大多数网络打印机和打印服务器一般会忽略输出格式。
Ø 4.并行设备
并行设备支持系统中的标准并逐行打印机端口。设备URL由模式名及其后的设备文件名组成。下列URL在各个版本的Linux中都可使用,且都指第一个并行端口:
Parallel:/dev/lp0
Parallel:/dev/par0
Parallel:/dev/parallel/0
Ø 5.要确定系统所用的设备文件名,可使用上述lpinfow命令。并行设备不支持任何选项。
串行设备
串行设备支持系统中的标准RS-232C串行端口。设备URL由模式名及其后的设备文件名和任意选项组成。下列URL在各个版本的Linux中都可使用,且都指第一个串行端口:
Serial:/dev/ttys0
Serial:/dev/serial/0
串行后台程序支持若干选项
选项 说明
Band = N 设置串口的速度,以位/秒(波特率)为单位。默认颠值通常是9600波特。最大值由ipinfo命令提示
Bits = 7 将每个字符的数据位数设为7
Bits = 8 将每个字符的数据位数设为8(默认值)
Flow = rtscts 设置流控制,以使用request-to-send(RTS)和clear-to-send(STS)信号线
Flow = dtrdsr 设置流控制,以使用data-terminal-ready(DTR)data-set-rdady(DSR)信号线
Flow = hard 设置流控制,以使用request-to-send(RTS)和clear-to-send(STS)信号线
Flow = none 完全不使用流控制(默认值)
Flow = soft 使用XON和XOFF字符执行流控制。该方法对于打印机一般不太可靠
Parity = even 发送每个字符的同时均发送奇偶校验位。所有位的总和必须为偶数
Parity = none 不发送奇偶校验位(默认值)
Parity = odd 发送每个字符的同时均发送奇偶校验位。所有的位的总和必须为奇数
在以19200波特工作的端口1上的串逐行打印机如要使用7个数据位、偶数校验和DTEDSR流控制,则需要使用下列设备URL:
Serial://dev/ttys0?baud=19200+bits=7+parity=even+flow=dtedsr
由于相对于其他接口而言,串行端口速度很慢,所以它一般只用作后备端口,可者在点阵打印机打印文本时使用。
Ø 6.SMB设备
SMB设备支持使用SMB协议的Windows打印机进行打印。它是由SAMBA软件提供的。SMB打印机的设备URL如下:
Smb://workgroup/server/name
此处workgroup是服务器所属工作组的名称,server是服务器的NetBIOS名称,而name是打印机的共享名。“EPS”工作组中“foo”服务器上名为“bar”的打印机的URL如下所示:
Smb://ESP/foo/bar
如果共享打印机需要用户名和口令(通常Windows NT或2000服务器中的共享打印就是如此),则它们的URL可能采用下列形式:
Smb://username:password@workgroup/server/name
注意:
由于在URL中包含了用户名和口令可能带来潜在的安全问题,所以我们要使用由Windows NT或IPP Printing Services(IPP打印服务)提供的TCP/IP Printing Services(TCP/IP打印服务),前者在Windows 2000中提供。
这些服务的优点在于它们将正确的用户名同打印作业相关联,这是因为smb后台程序只能发送在URL中提供的用户名。
Ø 7.Socket设备
通过使用TCP/IP Socket,socket设备支持直接打印,这通常称为AppSocket打印或JetDireet协议。其设备URL只需要服务和可选的端口号:
Socket://server
Socket://server:port
默认端口号为9100。所有的HP JetDirect接口和许多其他网络打印机都使用该端口号。表3-5列出了各种设备所用的端口号。
表3-5 Socket设备的URL
制造商 URL
Axis socket://server: 9100(Parallel 1)
socket://server:9101(Parallel 2)
socket://server:9102 (Parallel 3)
EPSON socket://server
Hewlett Packard socket://server:(Internal)
socket://server:9100(Parallel 1)
socket://server:9101(Parallel 2)
socket://server:9102(Parallel 3)
Lexmarks socket://server:5503
Linksys socket://server:4010(Parallel 1)
socket://server:4020(Parallel 2)
socket://server:4030(Parallel 3)
NETGEAR socket://server:4010(Parallel 1)
socket://server:4020(Parallel 2)
socket://server:4030(Parallel 3)
Tektronix socket://srever
XEROX socket://server:5503
Socket设备是网络打印机或服务器支持的性能最好且最可靠的设备。Socket设备也可以将打印数据以流的形式发送给打印机,而其他网络设备则需要将打印数据存储在临时文件中,然后将此文件发送给打印机。
Ø 8.USB设备
USB设备支持通用串行总线(USB)进行打印。目前Linux和PC BSD操作系统都支持USB。USB打印机的设备URL各式各样,Linux的各个发行包使用的设备URL敢不尽相同。例如:
usb://dev/ulptn
usb://dev/unlpn
usb://dev/usblpn
usb://dev/usb/lpn
usb://dev/usb/usblpn
此处N是以0开头的USB打印机编号。与并行设备 类似,USB设备不支持任何选项。
注意:
USB打印机编号通常在启动时或在打印机已连接或中断连接时进行动态分配。这可能使现有打印机与错误设备相关联。
CUPS 1.2含有一个设备监控守护程序。新的USB打印机在已经连接、中断连接以及启动时,都会更新打印机设备URL。
16.1.2.1 传统打印方式
在Linux中,每一个计算机硬件被抽象为一个设备文件,通常在内核中伴随有相应的设备驱动程序。传统上命名为行式打印机的打印机设备是字符模式的设备,并且在/dev目录中可以找到:(设备名 打印机 打印机地址)
/dev/lp0第一台并行打印机0x3bc
/dev/lp1第二台并行打印机0x378
/dev/lp2第三台并行打印机0x278
串行打印机被分配为诸如/dev/tty Sx的串行设备,这里x是从0到3的编号。在/dev中列有很少几个tty设备。通常情况下,如果打算使用串行打印机,必须利用set serial命令。
16.1.2.2 传统方式的打印操作
我们原来的打印方式使用的是一个假脱机打印系统。打印机需要一个由用户提供的临时场所,该场所是一个特定的文件目录,该目录便称为打印队列(print spooler queue)。所有的打印作业将被放在这个队列中,直到打印机已经准备好完成这些任务。这种方式允许提交了打印作业的用户去继续做其他事情而不必等待这个打印作业的完成。在打印之前,每个打印作业将被编号,以确保打印机每次只对应一个打印作业。由假脱机打印进程lpd来管理和维护打印和编号的打印作业。
假脱机打印系统的使用,需要在Linux的适当的运行级别中做预先的启动和停止的配置。用户可以通过rc脚本在不同的运行级别配置它。有时,系统有问题需解决或故障修理,如果需要停止打印服务,可使用命令lpc;如果重新启动该服务,可使用lpd。停止打印服务会造成当前的打印作业被挂起,当打印服务重新启动时,这些打印作业会重新打印。启动和停止个别打印机的命令和其他的控制命令都放在/usr/sbin目录下。
下面简单介绍一下各个命令的作用:
# /usr/sbin/lpd |
lpd命令可以开始打印服务进程。
# /usr/sbin/lpc down |
挂起打印队列。
# su –c /usr/sbin/lpd |
改变身份到超级用户,开始打印服务进程。
# /usr/sbin/lpc status |
查看打印队列的状态。
16.1.2.2 新旧打印方式的对比
Ø CUPS支持IPP打印协议,而传统方式不支持。
Ø 传统方式不能使用多种打印机,而CPUS所支持的打印机种类大大增加。
Ø CUPS可以浏览网络打印机。
Ø 不必象传统的方式那样受到过多的限制。
Ø CUPS打印方式更安全。
CUPS提供了两种方法添中打印机:名为lpadmin的命令行程序和Web界面。lpadmin命令允许我们在命令行中执行大部分打印机管理任务,它通常位于/usr/sbin中。Web界面的网址是http://localhost:631/admin。它提供了一个向导,且此向导可以引导我们分步骤配置打印机。如果我们不喜欢命令行界面,则可以全用Web界面。
16.2.1.1 通过命令行添加打印机
运行带有-p选项的lpadmin命令,可将打印添加到CUPS中。命令的格式是
/usr/sbin/lpadmin –p名 –E –V URL设备 –m PPD文件夹 |
-P选项指定打印机的名称。此名称至多可由127个字符组成。
-E选项使打印机开始打印。如果不提供此选项,则不能够使用打印机进行打印。
-v选项指定打印所用的设备URL。要找到系统中可用的设备,请使用lpinfo命令。
-m选项指定已安装的PPD文件。lpinfo命令可用以列出已安装的PPD文件。
lpinfo –m
对于连接到Linux系统并行端口的HP DeskJet打印机而言,lpadmin命令可采用如下形式:
# /usr/sbin/lpadmin –p DesJet –E –v parallel:/dev/lp0 –m deskjet.ppd |
类似地,如要添加使用JetDirect网络接口的HP LaserJet打印机,且此接口的地址为192.168.0.89,可运行下列命令:
# /usr/sbin/ipadmin –p LaserJet –E –v socket:// 192.168.0.89 –m laserjet.ppd |
添加了打印之后,我们还应该配置此打印的默认选项。使用-o选项就可以设置打印机的指定选项:
# lpadmin –p name –o option=value |
Option名称可以是PPD文件中列出的任意选项,或者是第4章“使用CUPS进行打印”中说明的IPP标准选项之一。
现在使用下列命令本地默认纸张和分辨率:
# lpadmin –p name –o media=letter –o resolution=600dpi |
此命令将纸张大小设为letter(8.5×11英寸),并将分辩率高为600点/英寸(dpi)。这些选项适用于新型Hewlett Packard打印机。表3-8列出了每个CUPS驱动程序所支持的纸张和分辩率的值。
打印机驱动程序 |
所支持的纸张 |
所支持的分辩率 |
EPSON 9-pin Series |
letter,legal,a4,fanfoldus |
60dpi,120dpi,240dpi |
EPSON 24-pin series |
letter,legal,a4,fanfoldus |
60dpi,120dpi,180dpi,360x180dpi,360dpi |
EPSON Stylus Color |
letter,legal,tabloid,a4,a3 |
180dpi,360dpi,720dpi |
EPSON Stylus Photo |
letter,legal,tabloid,a4,a3 |
180dpi,360dpi,720dpi |
HP DeskJet Series |
letter,legal,tabloid,a4,a3 |
150dpi,300dpi,600dpi |
HP LaserJet Series |
letter,legal,tabloid,a4,a3 |
150dpi,300dpi,600dpi |
Okidata 9-pin Serise |
letter,legal,a4,fanfoldus |
60dpi,120dpi,240dpi |
Okidata 24-pin Serise |
letter,legal,a4,fanfoldus |
60dpi,120dpi,160dpi,360x180dpi,360dpi |
lpoptons命令可列出其他驱动程序所支持的选项及值:
# lpoptoins –p name –l |
最后,job-sheets-default选项指定打印机文件时使用的标题页。
lpadmin –p name –o job-sheets-default=standard |
CUPS含有7个不同的标题页。下面的表中列出了CUPS提供的标题页
名称 |
说明 |
None |
不使用标题页(默认) |
Classified |
在页面顶部和页面底部带有“Classified”字样的标准标题页 |
Confidential |
在页面顶部和页面底部带有“Confidential”字样的标准标题页 |
Secret |
在页面顶部和页面底问带有“Secret”字样的标准标题页 |
Standard |
显示作业标题、用户名和日期的单页 |
Topsecret |
在页面顶部和页面底部带有“Top Secret”字样的标准标题页 |
Unclassified |
在页面顶部和页面底部带有“Unclassified”字样的标准标题页 |
CUPS服务器为用户提供了界面友好的向导,以使我们能够通过Web浏览器添加打印机。我们可以单击适当的列表并填写简单的信息,而勿须指出要使用哪一个设备URL和PPD文件。
1. 首先可在Web浏览器中打开下列URL:
http://localhost:631/admin |
2. 单击Add Printer按钮,则显示Printer Wizard的第一个页面。
请在对应的文本框中输入打印机名称、位置和说明。前面已介绍过,打印机名称至多可由127个字符组成。打印机位置和说明字段可包含任意普通文本,包括空格。
3. 单击Continue按钮,则显示Printer Wizard的下一个页面。
从列表中选择设备并单击Continue按钮。如果选择了网络设备,则将显示URL页。输入打印机的设备URL并单击Continue按钮。
对于串行设备而言,则显示串行配置页面。
4. 在选择并配置了所需要的设备后,将出现制造商选择页面。从列表中选择适当的制造商,并单击Continue按钮,则显示模型选择页面。从列表中选择适当的类型,并单击Continue按钮,以添加打印机。单击打印机连接,则可以查看打印队列状态。
5. 添加了打印机之后,我们还应该设置打印机的默认选项。单击Configure Pringter按钮配置打印机。
查看该页面上的每个选项,并进行必要的更改。更改过之后,可单击Configuration按钮以保存更改。
首先我们可以通过打印测试页来试一下。在添加了打印机之后,我们可能要打印测试页。CUPS为此提供了一个简单的测试页文件。单击Web界面中的Print Test Page按钮,或运行下列命令,以使用新打印机打印测试。
# lp –d name /usr/share/cups/data/testprint.ps |
和传统打印系统不同的是,CUPS支持直接在程序外打印很多不同类型的文件。例如,如果不使用CUPS打印PDF文件,我们就可能必须将该文件加载到Acrobat Reader或Xpdf中。如果使用CUPS。我们就可以直接打印PDF文件。
CUPS既提供System V(lp)的打印命令,也提供Berkeley(lpr)的打印命令。要使用系统的默认(或惟一)打印机打印文件,我们可键入下列命令之一:
# lp filename # lpr filename |
许多系统拥有多台打印机供用户使用。这些打印机可通过并口、串口或USB端口连接到本地系统,而且用户还可以通过网络访问这些打印机。
要查看可用打印的列表。请使用lpstat命令:
# lpstat –p –d Printer CLJ4550 is idle Printer LJ400 is idle Printer StylusColor600 is idle System default destination:LJ4000 |
-p选项提供打印机的名称后,我们可以使用带-d选项的lp-命令或使用带-P选项的lpr命令,以便使用该打印进行打印。
# lp –d name filename # lpr –d name filename |
Name是lpstat命令报告的名称。用户可使用name@server访问远程服务器上的打印机。
16.3.2.1 打印多个副本
lp和lpr命令都具有以打印文件的多个副本的选项:
# lp –n num-copies filename # lpr–# num-copies filename |
默认情况下出于速度的考虑,副本不会被核对。
本节说明使用lp和lpr命令打印时可用的标准打印机选项。
16.3.3.1 一般选项
下面列出在打印所有类型的文件时都可使用的一般选项。
名称 |
说明 |
brightness |
设置输出的总亮度 |
gamma |
设置输出的总灰度校正(对比度) |
job-sheets |
选择作业使用的标题页 |
landscape |
横向打印 |
media |
设置纸张大小 、来源和/或类型 |
number-up |
设置每纸上要打印的文档页数 |
page-ranges |
打印文档中选中的页 |
page-set |
打印文档的所有页、偶数页或奇数页 |
aides |
单面打印或双面打印 |
1.设置方向
Landscape选项页面旋转90度,以进行横向打印:
# lp –o landscape filename # lpr –o landscape filename |
2.选择纸张大小、类型和/或来源:
# lp –o media=Letter flename # lp –o media=Letter,MultiPurpose flename # lp –o media=Letter.Transparency flename # lp –o media=Letter,MultiPurpose,Transparency flename |
我们可以指定多个纸张值,只需使用逗号分隔这些值即可。
可用的纸张大小、类型和来源取决于打印机,但大部分打印机都支持下表中的选项。
值 |
说明 |
Letter |
U.S.Letter(8.5×11 英寸或216×279mm) |
Legal |
U.S.Lgal(8.5×14 英寸或216×356mm) |
A4 |
ISO A4(8.27×11.69英寸或210×297mm) |
COM10 |
US #10 Envelope(9.5×4.125英寸或220×105mm) |
DL |
ISO DL Envelope(8.66×4.33英寸或220×110mm) |
Transparency |
透明纸张类型或来源 |
Upper |
上纸盒 |
Lower |
下纸盒 |
multipurpose |
多用途纸盒 |
largeCapacity |
大容量纸盒 |
实际的纸张选项都来自打印机的PPD文件中的PageSize、InputSlot和MediaType选项。要查看这些选项,我们可使用grep过滤lpoptions的输出:
# lpoptions –p name –l | grep`pageSize|MediaType|InputSlot` Pagesize/media size:A4 A5 B5 custom env10 envISOB5 envC5 envDL envMonarch →executive legal *letter Inputslot/media source:envelope kupper manualfeed middle lower *largecapacity Mediatype/media type:bond vcardstock color labels letterhead →*none plain lpreprinted prepunched recyled rough rtansparency |
3.双面打印
Sides选项开启或关闭,下表所示为Sides选项的有效值
选项 |
说明 |
-o sides = oone-sides |
单面打印 |
-o sides =tow-sides-long-edge |
纵向文档双面打印 |
-o sides = two-sides-short-edge |
横向文档双面打印 |
最常用的值为给向文档打印,如下所示:
# lp –o sides=two-side-long filename # lpr –o sides=two-side-long filename |
16.3.3.2 标题选项
Job-sheets选项适用打印所有类型的文件,它指定作业要使用的标题页:
# lp –o job-sheets=none filename # lp –o job-sheets=standard filename # lp –o job-sheets=classified,classified filename |
如果只指定一个标题文件,则它在打印作业中的文件之前打印,而且在作业完成后不会打印任何标题。如果指定两个标题文件,则在打印作业中的文件之前打印第一个标题,并在作业完成之后打印第二个标题。
可用的标题页根据本地系统配置的不同而不同。下面列出标准CUPS标题文件。
名称 |
说明 |
None |
不打印标题页 |
Classified |
在顶部和底部带有“classified”标签的标题页 |
Confidential |
在顶部和底部带有“confidential”标签的标题页 |
Secret |
在顶部和底部带有“secret”标签的标题页 |
Standard |
在顶部和底部不带有标签的标题页 |
Topsecret |
在顶部和底部带有“topsecret”标签的标题页 |
Unclassified |
在顶部和底部带有“unclassified”标签的标题页 |
16.3.3.3 文档选项
在打印所有类型的文件时都可用下表来输入:
名称 |
说明 |
brightness |
调节打印输出的亮度 |
gamma |
调节打印输出的灰度(对比度) |
numbet-up |
在单页上打印多个文档页 |
page-ranges |
选择打印页码范围 |
1.选择页码范围
Page-ranges选项打印的页码范围:
# lp –o page-ranges=1filename # lp –o page-ranges=1-4 filename # lp –o page-ranges=1-4, 7, 9-12 filename # lp –o page-ranges=1-4, 7, 9-12 filename |
如前所示。Pages取值可以是一页、页码范围、页数的集合或者以逗号隔开的页码范围。不管Pages-ranges选项的页码顺序如何,所有页总是按升序打印。
默认情况下打印所有页。
2.选择偶数或奇数页
要选择偶数或奇数页,可使用page-set选项
# lp –o page-set=odd filename # lp –o page-set=even filename # lpr –o page-set=all filename |
上表中page-set选项的合法取值
名称 |
说明 |
All |
打印所有页(默认值) |
Even |
只打印偶数页 |
Odd |
只打印奇数页 |
3.N-UP打印
Number-up选项选择N-UP打印。N-UP打印可在一个打印页面上打印多个文档页。
CUPS支持1-UP、2-UP和4-UP格式:
# lp –o number –up=1 filename # lp –o number –up=2 filename # lp –o number –up=4 filename # lpr –o number –up=4 filename |
默认格式为1-UP。
4.设置亮度
我们可以使用brightness选项控制打印输出的总亮度
# lp –o brightness=120 filename # lpr –o brightness=80 filename |
大于100的值将增加打印的亮度,而小于100的值将减小于打印的亮度。
5.设置灰度校正
我们可以使用gamma选项控制打印输出的总灰度校正。
# lp –o gamma=1700 filename # lpr –o gamma=455 filename |
大于1000的值将减小打印的灰度,而小于1000的值将增加打印的灰度。默认灰度为1000。
16.3.3.4 文本选项
下列选项只适用于打印文本文件的情形。表4-7列出了文本打印选项。
表4-7 文本文件的选项
名称 |
说明 |
columns |
设置文本的列数 |
cpi |
设置每英寸的安符数 |
lpi |
设置每英寸的行数 |
page-bottom |
设置底边距 |
page-left |
设置左边距 |
page-right |
设置右边距 |
page-top |
设置上边距 |
prettyprint |
打印顶部的页眉并加亮语法 |
1.设置每英寸的字符数
cpi选项设置每英寸的字符数
# lp –o cpi=10 filename # lp –o cpi=12 filename # lpr –o cpi=17 filename |
默认的每英寸字符数为10
2.设置每英寸的行数
lpi选项设置每英寸的行数
# lp –o lpi=6 filename # lpr –o lpi=8 filename |
默认的每英寸行数为6
3.设置列数
Columns选项设置文本列数
# lp –o columns=2 filename # lpr –o columns=3 filename |
默认列数为1
4.设置页边距
通常情况下,页边距被设为打印机固有的限制边距。我们可使用Page-left、Page-right、Page-top和Page-bottom选项以调整页边距:
# lp –o Page-left=72 –o Page-right=36 filename # lp –o Page-top=36 –o Page-bottom=36 filename # lp –o Page-left=72 –o Page-right=36 –o page-top=36 page-bottom=36 filename |
值参数就是以磅计的边距。72磅表球示73磅/英寸。28磅表示28磅/每厘米。
5.良好打印
Prettyprint选项在每页在顶部打印页眉,包括页号、作业标题(通常是文件名)和日期。此外,脚本、perl、C和C++关键字都以黑体表示,注释行以斜体表示,而预处理行和字符串则高亮显示。Prettyprint选项没有相关的值:
# lp –o prettyprint filename # lpr –o prettyprint filename |
163.3.5 图像选项
下列选项只在打印图像文件时适用。下表列出了有效的图像打印选项
名称 |
说明 |
Hue |
调整图像的色调 |
Position |
设置图像在页面上的位置 |
ppi |
设置图像的分辨率,以像素/英寸计 |
Saturation |
调整图像的颜色饱和度 |
Scaling |
设置图像的大小、以页面百分比计 |
1.图像的定位
Position选项指定图像在页面上的位置。下表列出了有效的位置
选项 |
说明 |
-o position = center |
将图像放在页面的中央(默认值) |
-o position = top |
在页面上方中央打印图像 |
-o position = left |
在页面左侧中央打印图像 |
-o position = right |
在页面右侧中央打印图像 |
-o position = top-left |
在页面左上角打印图像 |
-o position = top=right |
在页面右上角打印图像 |
-o position = bottom |
在页面底部中央打印图像 |
-o position = bottom-left |
在页面左下角打印图像 |
-o position = bottom-right |
在页面右下角打印图像 |
2.缩放图像
图像通常使用图像文件自身的分辨率信息进行缩放。如果没有这种信息,则图像使用128像素/英寸的默认分辨率。
Scaling和ppi选项更改打印图像的大小:
# lp –o scaling=100 fliename # lp –o ppi=128 fliename # lpr –o ppi=300 fliename |
Scaling值为1到800的百分比。百分比以页面尺寸而不是图像尺寸为基础。因此100%的缩放将尽可能完全地填充整个页面。200%缩放将在4个页面上打印图像。50%缩放将使图像占用页面的大约一半大小。
ppi值为从1到1200的数字。它以像素/英寸为单位指定图像的分辨率。例如,3000×2400像素的图像如查以300像素/英寸的分辨率打印,则将占用10×8英寸的面积。如果指定的分辨率使图像超出所允许的页面,则图像将在多个页页上打印,以满足图像大小的要求。
3.高速图像的色调(浓度)
Hue值调整打印图像的色调,这与电视机的浓淡控制很相似:
# lp-o ude=0 filename # lp-o ude=45 filename # lpr-o ude=45 filename |
该值为从-360至360数字,这表示色调循环的度数。下表概括了不同颜色的变化:
色调调整值
初始 |
hue = -45 |
hue = 45 |
红色 |
紫色 |
黄橙色 |
绿色 |
黄绿色 |
蓝绿色 |
黄色 |
橘黄色 |
绿黄色 |
蓝色 |
天蓝色 |
紫色 |
品红色 |
蓝靛色 |
绯红色 |
青色 |
蓝绿色 |
浅海军蓝色 |
默认的色调调整值为0。
4.调整图像的饱和度(色彩)
Saturation选项调整图像中的颜色饱和度,这与电视机的颜色控制很相似:
# lp –o saturation=100 filename # lp –o saturation=0 filename # lpr –o saturation=200 filename |
该值指定从0到200的颜色饱和度。颜色饱和度通常为100%。颜色饱和度为0将产生黑白打印。而饱和度为200则合色彩非常强烈。
默认饱和度为100。
16.3.3.6 HP-GL/2选项
下列选项只适用于HP-GL/2文件。下表是HP-GL/2文件的打印选项:
名称 |
说明 |
Blackplot |
以黑色墨水绘图 |
Fitlot |
使图形与页面匹配 |
Penwidth |
设置默认的画笔宽度 |
1.使用黑色进行打印
Blackplot 选项指定所有画笔都以黑色绘图:
# lp –o Blackplot filename # lp r–o Blackplot filename |
默认情况下使用在图形文件中定义的颜色,或都使用Hewlett Packard里的HP-GL/2参考手册中定义的标准画笔。
2.使图形与页面匹配
Fitplot选项指定图形应缩入到与页面匹配的程序:
# lp –o fitplot filename # lpr –o fitplot filename |
默认情况下使用图形文件中的绝对距离。
注意:该特性取决于HP-GL/2文件中精确的图形大小(PS)命令。如果在该文件中未指定图形大小,则不会执行缩入。
3.设置默认画笔宽度
Penwidth选项HP-GL/2的默认画笔宽度:
# lp –o penwidth=1000 filename # lpr –o penwidth=0 filename |
Penwidth值以毫米为单位指定画笔宽度。默认值为1000,这将产生1毫米宽的线条。如果指定画笔宽度为0。则实际上产生1像素宽的线条。
注意:当图形文件指定了画笔宽度时,该选项将被忽略。
16.3.3.7原始或未过滤输出
Raw选项允许我们将文件直接发送给打印机,而不是经过任何过滤处理。在应用程序中打印时,并且该应用程序为打印机提供了自己的打印机驱动程序,就必须使用该选项:
#lp –o raw filename # lpr –o raw filename |
-l选项也可与lpr命令一起使用,以将文件直接发送给打印机。
# lpr –l filename |
16.3.3.8 保存打印选项
每种打印机都支持大量选项。CUPS允许我们将各个选项保存为打印机的默认选项。这样我们就不必在每次打印时都指定这些选项了。
lpoptions命令可保存打印机的选项。与lp和lpr命令类似,它使用-o选项接受打印机选项:
# lpoprions –o media=A4 –o sides=two-sided-logn-edge # lpoprions –o media=legal–o scaling=100 |
在保存了这些选项后,则在打印时任何lp或lpr命令都将使用这些选项。
16.3.3.9 设置特定打印机的选项
上例说明了如何设置默认打印机的选项。-p打印机选项指定了特定打印机的选项:
# lpoptions –p name –o media=A4 –o sides=two=sided-long-edge # lpoptions –p name –o media=legal –o scaling=100 |
16.3.3.10 查看当前保存的选项
lpoptions命令也可用于显示当前选项。为此,我们在命令行中不指定任何新选项:
# lpoptions Media=A4 sides=two-sided-long-dege # lpoptions –l deskjet Media=legal scaling=100 |
16.3.3.11 设置默认打印机
除了设置每个打印队列的选项外,CUPS还可以创建打印机实例。这些实例允许我们为每台打印机定义几套不同的选项。我们可使用斜杠(/)字符指定打印机实例:
# lp –d laserjet/duplex filename # lpr –p laserjet/legal filename |
注意:lpoptions命令用以创建打印机实例以及设置默认选项。在我们第一次在lpoptions命令中使用实例名称时,该实例将被创建。例如,运行下列命令将为“deskjet”打印机创建名为“photo”的新实例:
# lpoptions –p deskjet/photo –o redalution=600dpi –o media=phaoto |
删除选项实例
使用-x选项可删除我们不再需要的所有打印机选项或实例“
# lpoptions –x deskjet # lpoptions –x laserjet/duplex # lpoptions –x laserjet/legsl |
-x 选项只删除该打印机或实例的选项。而初始打印机和系统默认值将保留。