本章提供有关以下功能的参考信息:
本节提供适用于使用 Solaris Print Manager 设置和管理打印机的附加参考信息。
Solaris Print Manager 会检查用户在输入屏幕中针对各个文本字段的输入。有以下两种类型的检查: 一般非法输入和特定字段的非法输入。
Solaris Print Manager 不接受以下字符作为输入(帮助屏幕除外):
Shell 元字符,如 “\$^&*(){}`'|;:?<>(网络打印机屏幕上的目标字段除外,它接受冒号 (: ))
多字节字符
井号 (#)、空格或制表符(说明字段除外,它接受制表符)
以下章节介绍可以使用 Solaris Print Manager 设置的每种打印机定义:
将打印机添加到系统时,会为打印机指定打印机名称。
打印机名称必须遵循以下指导:
打印机名称在管理域范围内的所有打印机中必须是唯一的。
打印机名称最多可以包含 14 个字母数字字符(可以包含短划线和下划线)。
打印机名称现在可以包含点 (.),长度可高达 255 个字符。
打印机名称应易于记忆,并可以标识打印机类型、打印机位置或打印服务器名称。
建立适用于您站点的命名约定。例如,网络中具有不同类型的打印机时,在打印机名称中包括打印机类型,可以帮助用户选择合适的打印机。例如,您可能会用字母 PS 标识 PostScript 打印机。但是,如果站点上的所有打印机都是 PostScript 打印机,则无需在打印机名称中包含首字母 PS。
打印服务器是一个连接了本地打印机并使该打印机可供网络上的其他系统使用的系统。
您可以使用 lpadmin -D 命令或使用 Solaris Print Manager,为打印机指定描述。打印机描述应该包含可帮助用户识别打印机的信息。您可能包括打印机所在的房间号、打印机类型、制造商或在出现打印问题时拨打其电话的人员姓名。
用户可以使用以下命令来查看打印机描述:
$ lpstat -D -p printer-name |
最初安装打印机或稍后更改其设置时,您可以指定打印机所连接到的设备或打印机端口。您可以使用 Solaris Print Manager 或 lpadmin -p printer-name -v device-name 命令来指定设备或打印机端口。
大多数系统都有两个串行端口,外加一个并行端口或 USB 端口。除非添加端口,否则无法将两个以上的串行打印机和一个并行打印机或者两个 USB 打印机直接连接到一个系统。
您可以使用 Solaris Print Manager 选择以下打印机端口类型。这些选项所提供的灵活性与使用 lpadmin 命令一样。
打印机端口类型 |
对应的设备名称选项 |
---|---|
串行 |
/dev/term/a |
串行 |
/dev/term/b |
并行 |
/dev/printers/0 —> /dev/ecpp0 |
USB |
/dev/printers/[1–9] |
指定打印服务器识别的任何端口名称 |
其他 |
LP 打印服务使用标准打印机接口程序中的设置来初始化打印机端口。有关打印机接口程序的更多信息,请参见管理打印过滤器。如果您的并行打印机或串行打印机的缺省设置不起作用,请参见调整打印机的端口特征。
如果在基于 x86 的系统上使用多个端口,则缺省情况下仅启用第一个端口。缺省情况下,禁用第二个端口和任何后续端口。要使用多个端口,您必须手动编辑其他各个 asy(串行)端口或 ecpp(并行)端口的设备驱动程序端口配置文件。x86 端口配置文件的路径名如下所示:
/kernel/drv/asy.conf
打印机类型是一类打印机的通用名称。打印机类型标识包含打印机的各种控制序列的 terminfo 数据库项。按照惯例,打印机类型通常源自生产商的型号名称。例如,DECwriter 打印机的打印机类型名称是 decwriter。但是,常见的打印机类型 PS 不遵循此惯例。PS 被用作 PostScript 打印机的许多型号(如 Apple LaserWriterI 和 Apple LaserWriterII 打印机)的打印机类型。有关 terminfo 数据库的更多信息,请参见terminfo 数据库。
您可以使用 lpadmin -T 命令或 Solaris Print Manager 指定打印机类型。
在此 Oracle Solaris 发行版中,要使用 Solaris Print Manager 指定文件内容类型打印机定义,首先应在 Solaris Print Manager 的“打印管理器”下拉式菜单中取消选中“使用 PPD 文件”缺省属性。如果您使用 PPD 文件,则不能选择文件内容类型。与 PPD 文件关联的打印机的缺省文件内容类型为 PostScript。此文件内容类型由工具自动设置。您还可以使用 lpadmin -I 命令来指定文件内容类型。
打印过滤器将文件的内容类型转换为目标打印机可接受的内容类型。文件内容类型通知 LP 打印服务此类型文件内容可以直接进行打印而不必进行任何过滤。要在不过滤的情况下打印,打印机中还必须安装所需的字体。对于其他类型的文件,必须设置和使用过滤。
大多数打印机可以直接打印以下类型的文件:
与打印机类型相同的类型。例如,PostScript 打印机的 PS。
simple 类型。例如 ASCII 文本文件。
在提交文件以进行打印时,用户可以使用 lp -T content-type 命令指示文件的内容类型。如果在提交请求时未提供文件内容类型,则 LP 打印服务将检查请求打印的第一个文件以确定内容类型。如果文件以 ^D%! 或 %! 开头,则认为请求中包含 PostScript 数据。否则,认为请求中包含 simple (ASCII) 文本。LP 打印服务利用文件内容类型确定使用哪些过滤器将文件内容转换为打印机可处理类型。
如果您没有指定 PPD 文件,Solaris Print Manager 会提供一个文件内容类型列表,当您安装或修改连接的打印机或网络连接打印机时可以从中进行选择。所做的选择将被转换为 LP 打印服务使用的名称。下表介绍可以使用 Solaris Print Manager 选择的文件内容类型。
表 12–1 在不使用 PPD 文件的情况下通过 Solaris Print Manager 选择文件内容类型
文件内容选项 |
LP 打印服务名称 |
说明 |
---|---|---|
PostScript |
postscript |
PostScript 文件不需要过滤。 |
ASCII |
simple |
ASCII 文件不需要过滤。 |
PostScript 和 ASCII |
simple、postscript |
PostScript 文件和 ASCII 文件不需要过滤。 |
无 |
"" |
除与打印机类型匹配的那些文件外,所有文件都需要过滤。 |
任何 |
any |
不需要过滤。如果打印机无法直接处理文件内容类型,则不会打印文件。 |
选择与打印机功能最匹配的文件内容类型。PostScript 是 Solaris Print Manager 中的缺省选择,大多数情况下很可能是正确的。PostScript 表示 PostScript 文件无需过滤。
使用 PPD 文件设置打印机时,打印机生产商是打印机生产商的名称。可以在打印机本身以及打印机附带的包装材料和文档上找到打印机生产商。
下面是在此发行版中可用的打印机生产商示例:
Lexmark
Epson
Canon
QMS
Xerox
打印机生产商可以生产若干类型和型号的打印机。使用 PPD 文件设置打印机时,打印机型号准确定义打印机。型号通常压印在打印机的前部或顶部。在打印机附带的包装材料和文档上也显示此信息。
下面是在此发行版中可用的打印机型号示例:
Lexmark Optra E312
Lexmark Z32
Lexmark 1000
打印机驱动程序是在您为指定的打印机生产商和打印机型号选择 PPD 文件时确定的。
此打印机定义指定了目标打印机的主机名、IP 地址或 URI。此定义仅适用于网络连接的打印机。
可以使用以下格式指定打印机 URI:
lpd://{printer-name or ip}/printers/print-queue
ipp://{printer-name or ip}/printers/print-queue
socket://{printer-name or ip}:{port}
smb://{windows-host}/{ printer}
此打印机定义指定了要在打印服务器与打印机之间使用的协议。当前选择为 BSD、TCP 和 URI 网络协议。此打印机定义仅适用于网络连接的打印机。
此打印机定义用于指定在检测到打印机故障时是否发送通知,以及应如何发送通知。
缺省打印机是未在命令行中指定打印机时或未使用打印工具指定打印机时,打印系统命令所使用的打印机。有关使用 LP 打印命令设置缺省打印机目标的更多信息,请参见使用 LP 打印命令设置缺省打印机目标。
标题页是在请求打印作业时打印的第一页。可以将标题页设置为总是打印、有选择性地打印或从不打印。有关使用 LP 打印命令指定标题页选项的更多信息,请参见使用 LP 打印命令打印标题页。
用户访问列表指定了允许从指定打印服务器打印的用户的列表。有关使用 LP 打印命令限制用户对打印机的访问的更多信息,请参见使用 LP 打印命令限制用户对打印机的访问。
打印机类是打印机的集合。转至某类打印机的打印请求由该类中第一个可用的打印机进行处理有关使用 LP 打印命令定义打印机类的更多信息,请参见使用 LP 打印命令设置打印机类。
您可以找出有关打印故障的原因,以便可以更正问题。故障恢复选项是使用带有 -F 选项的 lpadmin 命令来定义的。有关使用 LP 打印命令设置故障恢复的更多信息,请参见使用 LP 打印命令设置打印机故障恢复。
本节介绍 LP 打印服务的目录结构、文件和日志。
LP 打印服务客户机命令已经过修改,可以使用 FSG OpenPrinting 开放标准打印 API (Print API, PAPI)。这些打印命令位于 PAPI 的上面一层。有关更多信息,请参见PAPI 在 Oracle Solaris OS 中的实现方式。
下表列出经常使用的 LP 打印服务命令。
表 12–2 LP 打印服务命令
命令 |
任务 |
手册页 |
---|---|---|
enable |
激活打印机 | |
cancel |
取消打印请求 | |
lp |
将一个或多个文件发送到打印机 | |
lpstat |
报告 LP 打印服务的状态 | |
disable |
取消激活一台或多台打印机 | |
accept |
允许打印请求为特定目标进行排队 | |
reject |
阻止打印请求为特定目标进行排队 | |
lpadmin |
设置或更改打印机配置 | |
lpfilter |
设置或更改过滤器定义 | |
lpforms |
设置或更改预先打印的表单 | |
lpadmin |
挂载表单 | |
lpmove |
将输出请求从一个目标移动到另一个目标 | |
lpsched |
启动 LP 打印服务调度程序 | |
lpshut |
停止 LP 打印服务调度程序 | |
lpusers |
设置或更改用户可以请求的 LP 打印服务的缺省优先级和优先级限制 |
有关已经过修改可用于 PAPI 的打印命令的信息,请参见PAPI 在 Oracle Solaris OS 中的实现方式。
LP 打印服务可执行以下功能:
管理文件和调度本地打印请求
接收和调度网络请求
如有必要,过滤文件,以便正确打印它们
启动作为打印机接口的程序
跟踪打印作业的状态
跟踪打印机上挂载的表单
跟踪当前挂载的打印轮
传送要求挂载新表单或其他打印轮的警报
传送有关打印问题的警报
/usr/lib/lp 目录包含由 LP 打印服务使用的守护进程和文件,如下表所述。
表 12–3 /usr/lib/lp 目录的内容
文件 |
类型 |
说明 |
---|---|---|
bin |
目录 |
包含用于生成打印警报、慢速过滤器和队列管理程序的文件。 |
model |
目录 |
包含标准打印机接口程序。 |
postscript |
目录 |
包含 LP 打印服务提供的所有 PostScript 过滤器程序。这些过滤器随 /etc/lp/fd 目录中的描述符文件一起提供。这些文件会通知 LP 打印服务过滤器的特征以及它们的位置。 |
目录 |
内容 |
---|---|
/usr/bin |
LP 打印服务的用户命令。 |
/etc/lp |
LP 服务器配置文件的分层结构。 |
/usr/share/lib |
terminfo 数据库目录。 |
/usr/lib/print |
lp 转换脚本、in.lpd 守护进程和 printd 守护进程。printd 守护进程每分钟传输一次 /var/spool/print 目录中的所有暂挂作业。当没有要传输的剩余作业时,printd 守护进程将退出。 |
/usr/sbin |
LP 打印服务管理命令。 |
/usr/lib/lp |
lpsched 程序、二进制文件、PostScript 过滤器以及包含标准打印机接口程序的 model 目录。 |
/var/lp/logs |
LP 日志文件,如 lpsched.n(它包括来自 lpsched 的消息)和 requests.n(它包括有关已完成的打印请求的信息)。 |
/var/spool/lp |
其中的文件排队等待打印的假脱机目录。 |
/var/spool/print |
LP 打印服务客户端请求的临时区域。 |
/etc/lp/model/uri |
用于处理 device-uri 信息的接口脚本的位置。 |
lpsched 守护进程在 /etc/lp 目录中存储配置信息,如下表所述。
此表中列出的配置文件是专用接口。这些文件在将来的发行版中可能会更改。您不应生成依赖于当前位置的这些文件或依赖于当前所用格式的数据的软件。
文件 |
类型 |
说明 |
---|---|---|
classes |
目录 |
标识 lpadmin -c 命令提供的类的文件。 |
fd |
目录 |
现有过滤器的说明。 |
filter.table |
文件 |
打印过滤器查找表。 |
forms |
目录 |
用于放置每个表单的文件的位置。此目录最初为空。 |
interfaces |
目录 |
打印机接口程序文件。 |
logs |
到 /var/lp/logs 的链接 |
打印活动的日志文件。 |
model |
到 /usr/lib/lp/model 的链接 |
标准打印机接口程序。 |
printers |
目录 |
每台本地打印机的目录。每个目录都包含单台打印机的配置信息和警报文件。 |
pwheels |
目录 |
打印轮文件或盒文件。 |
ppd |
目录 |
使用 PPD 文件配置的每个本地队列都在此处放置了 PPD 文件的一个副本。 |
这些配置文件提供与基于 LPD 的打印服务器上的 /etc/printcap 文件类似的功能。
您可以检查配置文件的内容,但是不应直接编辑这些文件,而应改用 lpadmin 命令进行配置更改。更改将写入 /etc/lp 目录中的配置文件。lpsched 守护进程可管理和更新配置文件。
/etc/lp/printers 目录包含系统可识别的每个本地打印机的子目录。以下示例显示了打印机 sparc1 和 luna 的 /etc/lp/printers 子目录。
$ ls -l /etc/lp/printers drwxrwxr-x 2 lp lp 512 Jan 23 23:53 luna drwxrwxr-x 2 lp lp 512 Jan 11 17:50 sparc1 |
下表介绍了每个打印机特定的目录内的文件。
文件名 |
说明 |
---|---|
alert.sh |
在响应警报时要执行的 Shell |
alert.vars |
警报变量 |
configuration |
配置文件 |
users.deny |
拒绝其访问打印机的用户的列表 |
comment |
打印机描述 |
打印机 luna 的配置文件 /etc/lp/printers/luna/configuration 通常如下所示:
Banner: on: Always Content types: PS Device: /dev/term/b Interface: /usr/lib/lp/model/standard Printer type: PS Modules: default |
/usr/share/lib 目录包含 terminfo 数据库目录。此目录包含许多类型的终端和打印机的定义。LP 打印服务使用 terminfo 数据库中的信息执行以下任务:
初始化打印机
建立选定的页面大小、字符间距、行间距和字符集
将代码序列传送到打印机
每台打印机在 terminfo 数据库中使用短名称标识。如有必要,可以向 terminfo 数据库中添加一些项,但是这样做很单调乏味且很耗时。有关更多信息,请参见为不支持的打印机添加 terminfo 项。
有关每种打印机类型的信息存储在 terminfo 数据库 (/usr/share/lib/terminfo) 中。此信息包括打印机功能和初始化控制数据。您安装的打印机必须对应于 terminfo 数据库中的项。
$ pwd /usr/share/lib/terminfo $ ls 1 3 5 7 9 B H P a c e g i k m o q s u w y 2 4 6 8 A G M S b d f h j l n p r t v x z $ |
每个子目录都包含终端或打印机的已编译数据库项。这些项按打印机或终端类型的第一个字母进行组织。例如,如果具有 Epson 打印机,则在 /usr/share/lib/terminfo/e 目录中查找,以找出特定型号的 Epson 打印机。
$ cd /usr/share/lib/terminfo/e $ ls emots ep2500+high ep48 ergo4000 exidy2500 env230 ep2500+low epson2500 esprit envision230 ep40 epson2500-80 ethernet ep2500+basic ep4000 epson2500-hi ex3000 ep2500+color ep4080 epson2500-hi80 exidy $ |
Epson 打印机的项以 epson 开头。
如果具有 NEC 打印机,则在 /usr/share/lib/terminfo/n 目录中查找 NEC 打印机型号。
$ cd /usr/share/lib/terminfo/n $ ls ncr7900 ncr7900iv netronics network nuc ncr7900-na ncr7901 netty netx nucterm ncr7900i nec netty-Tabs newhp ncr7900i-na net netty-vi newhpkeyboard $ |
此目录中的 nec 项用于 NEC 打印机。
以下三个表列出打印机必需的 terminfo 项。
表 12–6 打印机的必需 terminfo 项(布尔值)
项 |
|
说明 |
---|---|---|
布尔值: |
|
|
|
cpix |
更改字符间距会更改分辨率 |
|
daisy |
打印机需要一个用于更改字符集的运算符 |
|
lpix |
更改行间距会更改分辨率 |
表 12–7 打印机的必需 terminfo 项(数字)
项 |
|
说明 |
---|---|---|
数字: |
|
|
|
bufsx |
打印之前缓冲的字节数 |
|
cols |
一行中的列数 |
|
cps |
平均打印速度(字符/秒) |
|
it |
将制表符初始设置为 n 个空格 |
|
lines |
每页的行数 |
|
orc |
水平分辨率,以字符为单位 |
|
orhi |
水平分辨率,以英寸为单位 |
|
orl |
垂直分辨率,以行为单位 |
|
orvi |
垂直分辨率,以英寸为单位 |
表 12–8 打印机的必需 terminfo 项(字符串)
项 |
|
说明 |
---|---|---|
字符串: |
|
|
|
chr |
更改水平分辨率 |
|
cpi |
更改每英寸字符数 |
|
cr |
回车 |
|
csnm |
字符集名称列表 |
|
cudl |
回车下移一行 |
|
cud |
回车下移 n 行 |
|
cuf |
回车右移 n 列 |
|
cvr |
更改垂直分辨率 |
|
ff |
弹出页面 |
|
hpa |
水平绝对位置 |
|
ht |
按 Tab 键跳至下一个 8 空格制表位 |
|
if |
初始化文件名 |
|
iprog |
初始化程序的路径名 |
|
is1 |
打印机初始化字符串 |
|
is2 |
打印机初始化字符串 |
|
is3 |
打印机初始化字符串 |
|
lpi |
更改每英寸行数 |
|
mgc |
清除所有页边距(上、下和左右) |
|
rep |
将一个字符重复 n 次 |
|
rwidm |
禁用倍宽打印 |
|
scs |
选择字符集 |
|
scsd |
开始定义字符集 |
|
slines |
将页长设置为每页 n 行 |
|
smgl |
设置当前列的左页边距 |
|
smglp |
设置左页边距 |
|
smgr |
设置当前列的右页边距 |
|
smgrp |
设置右页边距 |
|
smglr |
同时设置左页边距和右页边距 |
|
msgt |
设置当前行的上页边距 |
|
smgtp |
设置上页边距 |
|
smgb |
设置当前行的下页边距 |
|
smgbp |
设置下页边距 |
|
smgtb |
同时设置上页边距和下页边距 |
|
swidm |
启用倍宽打印 |
|
vpa |
将垂直位置设置为绝对位置 |
日志文件名称 |
说明 |
---|---|
syslogd |
将 /etc/syslog.conf 中的 lpr.debug 设置为启用 LP 打印服务日志记录 |
/var/spool/lp |
排在打印队列中的当前请求的列表 |
/var/lp/logs/requests |
打印请求的进展历史记录 |
每个系统的调度程序都将打印请求日志保留在 /var/spool/lp/tmp/system 和 /var/spool/lp/requests/system 目录中。每个打印请求都有两个文件,用于包含有关请求的信息,每个目录中各有一个文件。只有超级用户或 lp 才能访问 /var/spool/lp/requests/system 目录中的信息。只有已提交请求的用户、超级用户或 lp 才能访问 /var/spool/lp/tmp/system 目录中的信息。
以下示例显示了 /var/spool/lp/tmp/starbug 目录的内容:
$ ls /var/spool/lp/tmp/starbug 5 5-0 # cat 5-0 C 1 D print1 F /etc/profile P 20 T /etc/profile t simple U root s 0000 v 2 |
只要打印请求排在队列中,这些文件就仅保留在其目录中。完成打印请求后,将对文件中的信息进行合并,并附加到 /var/lp/logs/requests 文件。此文件将在下一节中介绍。
如果需要跟踪当前队列中打印请求的状态,请使用 /var/spool/lp/logs 目录中的信息。
LP 打印服务在以下两个日志文件中记录打印服务的历史记录:lpsched 和 requests。这些日志文件位于 /var/lp/logs 目录中。您可以使用这些日志文件中的信息诊断和排除打印故障。以下是 /var/lp/logs 目录内容的一个示例:
# cd /var/lp/logs # ls lpsched.1 requests requests.2 lpsched lpsched.2 requests.1 # |
以下是用于排除故障的两个最重要的日志文件:
lpsched 日志文件-包含有关本地打印请求的信息。
requests 日志文件-包含有关已完成且已不在打印队列中的打印请求的信息。
requests 日志文件具有简单的结构,以便您可以使用常见的 UNIX shell 命令提取数据。请求将按其打印的顺序列出。另外,请求由显示其请求 ID 的行分隔。分隔行(以 = 开头的行)下方的每行标记有单个字母,以标识该行中所包含信息的种类。每个字母由单个空格与数据分隔开。
以下示例显示了 requests 日志文件的内容:
# pwd /var/lp/logs # tail requests.2 = print1-3, uid 0, gid 1, size 206662, Wed Mar 14 08:56:30 MST 2003 z print1 C 1 D print1 F /usr/dict/words P 20 T /usr/dict/words t simple U root s 0x0014 v 2 # |
下表显示了 requests 日志文件中的字母代码及其对应行的内容。
表 12–9 requests 日志文件中的代码
下表显示了 LP requests 日志文件中的结果代码及其说明。
表 12–10 requests 日志文件中的结果代码
结果代码 |
说明 |
---|---|
0x0001 |
请求处于暂挂状态,直到进行恢复。 |
0x0002 |
慢速过滤正在运行。 |
0x0004 |
慢速过滤已成功完成。 |
0x0008 |
请求位于打印机上。 |
0x0010 |
已成功完成打印。 |
0x0020 |
请求处于暂挂状态,直到用户进行更改。 |
0x0040 |
请求已取消。 |
0x0080 |
接下来将打印请求。 |
0x0100 |
请求无法过滤或打印。 |
0x0200 |
请求正在传输到远程打印机(过时)。 |
0x0400 |
用户将接到通知。 |
0x0800 |
通知正在运行。 |
0x1000 |
远程系统已接受请求(过时) |
0x2000 |
管理员暂挂了请求。 |
0x4000 |
打印机必须更改过滤器。 |
0x8000 |
请求暂时停止。 |
排队打印的文件在打印之前存储在 /var/spool/lp 目录中,这可能仅需几秒。下表显示了 /var/spool/lp 目录的内容。
表 12–11 /var/spool/lp 目录的内容
文件 |
类型 |
说明 |
---|---|---|
SCHEDLOCK |
文件 |
调度程序的锁定文件。如果调度程序终止且不会重新启动,请检查此文件。 |
admins |
目录 |
到 /etc/lp 的链接。 |
bin |
目录 |
到 /usr/lib/lp/bin 的链接。 |
logs |
链接 |
到 ../lp/logs(在其中记录已完成的打印请求)的链接。 |
model |
链接 |
到 /usr/lib/lp/model 的链接。 |
requests |
目录 |
包含每台已配置打印机的子目录的目录,其中记录了尚未打印的打印请求。用户无法访问此日志。 |
system |
目录 |
系统的打印状态文件。 |
temp |
链接 |
到 /var/spool/lp/tmp/hostname(包含已假脱机的请求)的链接。 |
tmp |
目录 |
每台已配置打印机的目录,其中记录了尚未打印的打印请求。对现有打印请求进行的更改也记录在此目录中。 |
打印过滤器是打印服务器上的程序,用于将已排队文件的内容从一种格式转换为另一种格式。
打印过滤器可以很简单,也可以很复杂,具体视需要而定。Oracle Solaris OS 在 /usr/lib/lp/postscript 目录中提供了打印过滤器,这些过滤器涵盖了目标打印机要求数据为 PostScript 格式的大多数情况。如果您需要用于非 PostScript 打印机的过滤器,则必须创建这些过滤器并将其添加到需要过滤器的系统。
/etc/lp/fd 目录中提供了一组打印过滤器描述符文件。这些描述符文件描述了过滤器的特征(例如,快速过滤器或慢速过滤器)。这些描述文件指向过滤器程序(例如,指向 /usr/lib/lp/postscript/postdaisy)。
LP 打印服务与 Oracle Solaris OS 的其他部件进行交互。打印服务使用标准打印机接口程序执行以下操作:
初始化打印机端口(如有必要)。标准打印机接口程序使用 stty 命令初始化打印机端口。
初始化打印机。标准打印机接口程序使用 terminfo 数据库和 TERM shell 变量查找相应的控制序列。
打印标题页(如有必要)。
按打印请求指定的份数正确地打印。
LP 打印服务使用在 /usr/lib/lp/model 目录中找到的标准接口程序,除非您指定了其他程序。您可以创建自定义接口程序。但是,必须确保自定义程序不会终止与打印机的连接或干扰正常的打印机初始化。
Oracle Solaris 打印子系统中已并入了使用 PPD 文件设置和管理打印机的支持。提供了两个接口脚本,即 standard_foomatic 和 netstandard_foomatic。这些接口脚本提供 Solaris 假脱机程序与打印服务器的后端进程之间的通用接口。
以下是支持的打印机类型的示例:
Lexmark Optra E312
Epson Stylus Photo 1280
Canon BJC-55
QMS magicolor 2+
借助 Oracle Solaris OS 中的光栅图像支持 (RIP),可以打印到不具备驻留 PostScript 处理功能的打印机。此打印软件提供了打印服务器 RIP 和支持技术。RIP 在后台进行处理。但是,要使用适当的驱动程序,您需要使用 Solaris Print Manager 或 lpadmin -n 命令来配置每台打印机。有关使用 lpadmin -n 命令的逐步说明,请参见如何使用 LP 打印命令添加新的直接连接的打印机。
lpadmin 和 lpstat 命令,以及 Solaris Print Manager 打印机定义屏幕都支持使用 PPD 文件。
以下新软件包与此功能相关联:
SUNWa2psr
SUNWa2psu
SUNWespgs
SUNWffiltersr
SUNWffiltersu
SUNWfppd
SUNWgimpprint
SUNWhpijs
SUNWimagick
SUNWpsutils
PPD 文件和 ppdcache 文件的存储位置是专用的,ppdcache 文件的内容也是专用的。这些文件的位置和 ppdcache 的内容可能会更改。请不要生成依赖于当前位置的这些文件或依赖于当前所用格式的数据的软件。
如果打印机需要的文件不可用,则可以添加自己的 PPD 文件。如果使用 lpadmin -n 命令创建新的打印队列,则可以将自己的 PPD 文件存储在所选的任何位置。如果您运行的是 Oracle Solaris 10 OS,并且使用 Solaris Print Manager 来创建打印队列,则 PPD 文件必须在 ppdcache 文件中有一个对应项。
如果您运行的是受支持的 Oracle Solaris 发行版,则 PPD 文件位于系统上的以下四个系统信息库中的任何一个:
指定 system 系统信息库。
指定 admin 系统信息库。
指定 vendor 系统信息库。
指定 user 系统信息库。
结合使用 lpadmin 命令和 -n 选项或结合使用 -a 选项和 ppdmgr 命令指定的 PPD 文件的副本存储在 user 系统信息库中,并以相同的 PPD 文件名命名。
如果您使用带有 -a 和 -R 选项的 ppdmgr 实用程序,则指定的 PPD 文件的副本可存储在 admin 系统信息库中。
如果您使用 Solaris Print Manager 创建打印队列,并且 ppdcache 文件中不存在与 PPD 文件对应的项,则可以使用 ppdmgr 实用程序将该文件添加到系统中。Solaris Print Manager 使用的 PPD 文件信息的高速缓存然后将会更新,以反映使用这两种方法之一所做的任何更改。
在以后的 Oracle Solaris 发行版中,PPD 文件位于 /usr/lib/lp/model/ppd/system 目录或任何由您指定的备用目录。
ls 命令的输出列出特定打印机制造商的所有 PPD 文件。
有关其他与任务相关的信息,请参见管理与 PPD 文件关联的打印机(任务图)。
本节包含有关管理 PPD 文件的参考信息。
使用 ppdmgr 实用程序将 PPD 文件添加到系统时,指定的 PPD 文件的压缩(采用 gzip)副本将存储在系统中。其目的是维护系统上所有已知 PPD 文件中的 PPD 文件信息的当前高速缓存。
复制到系统的 PPD 文件的完整路径如下:
repository/label/manufacturer/ppd-file-name |
是指定的系统信息库。如果没有使用 -R 选项指定系统信息库,则缺省系统信息库为用户系统信息库 /var/lp/ppd/。
是指定的标签。如果没有使用 -L 选项指定标签,则缺省标签为 user 系统信息库中的 user。
是 PPD 文件中包含的制造商的名称。此名称可能会根据 /var/lp/ppd/manufaliases 文件中定义的制造商别名进行修改。请参见生产商别名文件。
与使用 ppdmgr 实用程序指定的原始 PPD 文件名相同。如果压缩了 PPD 文件,则此文件还可以包含 .gz 扩展名。
下图显示了典型 PPD 文件系统信息库的布局以及 ppdmgr 实用程序目录布局(其中包含 ppdmgr 提供和生成的所有相关文件,包括 PPD user 文件系统信息库)。
下表介绍了位于系统中的 PPD 文件系统信息库。
表 12–12 PPD 文件系统信息库的说明
系统信息库 |
位置 |
内容 |
用于添加或修改的方法 |
---|---|---|---|
admin |
/usr/local/share/ppd/ |
此 PPD 文件系统信息库用于存储由系统管理员使用的 PPD 文件。 |
可以使用 ppdmgr 实用程序或 pkgadd 命令将 PPD 文件手动添加到此系统信息库中。 |
all |
表示系统上的所有 PPD 系统信息库 |
此系统信息库表示系统上所有受支持的 PPD 系统信息库位置。 |
请求使用 ppdmgr 实用程序更新或重新生成 PPD 高速缓存文件时,只能指定 all 系统信息库。 |
system |
/usr/share/ppd/ |
此系统信息库包含随 Oracle Solaris 一同提供的 PPD 文件。 |
可以使用 pkgadd 和 patchadd 命令将 Oracle 提供的 PPD 文件添加到 system 系统信息库中。 不应手动或使用 ppdmgr 实用程序来修改此系统信息库中的 PPD 文件。如果手动修改此系统信息库,则所做的更改可能会丢失。 |
user |
/var/lp/ppd |
此系统信息库由管理员和具备适当权限(打印机管理)的用户按照需要使用。 |
除非另行指定,否则使用带 -a 选项的 ppdmgr 命令添加到系统的 PPD 文件将被添加到该系统信息库。 |
vendor |
/opt/share/ppd/ |
此系统信息库是用于存储由供应商提供给 Oracle Solaris 的 PPD 文件的中央位置。 |
可以使用 pkgadd 命令将 PPD 文件添加到此系统信息库。 注 – 不能使用 ppdmgr 实用程序修改此系统信息库。 |
PPD 文件和 ppdcache 文件的位置是专用的,因此可能会更改。请不要生成依赖于当前位置的这些文件或当前格式的数据的软件。
在运行 Oracle Solaris 软件的系统上,可以将 PPD 文件存储在缺省标签目录中。您还可以指定自己选择的标签以组织 PPD 文件,只要该标签未被系统保留。
以下标签名被保留:
caches
ppdcache
manufaliases
all
除了 all 标签名以外,不能使用 ppdmgr 实用程序的 -L 或 -R 选项来指定这些标签名。不过,在使用 r 和 -u 选项时可以使用 -L 或 -R 选项来指定 -all 标签名。以 SUNW 开头的任何标签名都被保留供 Oracle 使用,但是并不禁止使用。
如果将 PPD 文件添加到系统中并且指定了一个并不存在的标签,则将在指定的系统信息库中创建具有该标签名的目录。缺省情况下,如果没有指定 PPD 文件系统信息库,则此目录为 /var/lp/ppd/label。有关在将 PPD 文件添加到系统时指定标签的更多信息,请参见ppdmgr 实用程序的命令行选项的说明。
选择“添加新的打印机(连接或网络)”或“修改打印机属性(连接或网络)”菜单选项时,将显示 Solaris Print Manager 中的“打印机驱动程序”字段。根据您所选择的打印机型号,此字段包含 PPD 高速缓存文件中的打印机驱动程序描述。为了区分 PPD 文件系统信息库中具有不同标签的重复打印机驱动程序描述,还会显示 PPD 文件系统信息库名称的标签和缩写。
打印机驱动程序描述所采用的格式如下:
label(repository-letter): driver-description
例如,以下 PPD 文件位于 user PPD 文件系统信息库中的 PHOTOS 标签中:
/var/lp/ppd/PHOTOS/HP/HP-PhotoSmart_P1100-hpijs.ppd.gz
此 PPD 文件会出现在 Solaris Print Manager 的“打印机驱动程序”字段选择列表中,如下所示:
PHOTOS(U): Foomatic/hpijs(推荐)
在以下示例中,以下 PPD 文件位于 system PPD 文件系统信息库中的 SUNWfoomatic 标签中:
此 PPD 文件会出现在 Solaris Print Manager 的“打印机驱动程序”字段选择列表中,如下所示:
SUNWfoomatic(S): Foomatic/hpijs(推荐)
下表介绍了 PPD 文件系统信息库字母、这些字母所代表的系统信息库,以及这些系统信息库在系统中所处的位置。
系统信息库缩写 |
系统信息库名称 |
系统信息库位置 |
---|---|---|
A |
admin |
/usr/local/share/ppd |
S |
system |
/usr/share/ppd |
U |
user |
/var/lp/ppd |
V |
vendor |
/opt/share/ppd |
生产商目录(每个生产商都有一个对应的目录)位于系统上的 PPD 系统信息库中。将 PPD 文件添加到系统时,使用 PPD 文件中包含的生产商名称来确定要将该 PPD 文件复制到哪个生产商目录中。专用文件 /var/lp/ppd/manufaliases 包含 PPD 文件中的所有生产商项的别名。引用 manufaliases 文件的目的是确定要将该 PPD 文件复制到哪个生产商目录中。此过程可确保每个生产商都有一个目录,而不是每个生产商别名都有一个目录。例如,如果某个 PPD 文件包含生产商名称 Hewlett-Packard,并且 Hewlett-Packard 的 HP 别名列在 manufaliases 文件中,则该 PPD 文件会存储在 HP 目录中。此策略适用于使用 ppdmgr 实用程序和 lpadmin - n 命令添加到系统的所有 PPD 文件。
manufaliases 文件是专用文件。请勿编辑此文件。请不要生成依赖于当前位置的文件或当前格式的数据的软件。
专用的 PPD 文件高速缓存在 /var/lp/ppd/caches/ 目录(每个系统信息库中的每个标签都有一个对应目录)中进行维护。
使用的高速缓存文件名的格式如下:
PPD-repository: label
PPD 高速缓存文件中有关 PPD 文件的信息使用 ppdmgr 实用程序进行维护。请勿手动编辑 PPD 高速缓存文件。请注意,/var/lp/ppd/caches 目录中的高速缓存文件用于生成专用 PPD 高速缓存文件 /var/lp/ppd/ppdcache。此文件由 printmgr 实用程序使用。有关更多信息,请参见 printmgr(1M) 手册页。
ppdcache 及其内容的位置是专用的。请不要生成依赖于当前位置的此文件或依赖于当前格式的数据的软件。此信息适用于生成或提供以供 ppdmgr 实用程序使用的任何专用文件。
本节介绍了 ppdmgr 实用程序的命令行选项。此外,还介绍了有关使用 ppdmgr 实用程序管理 PPD 文件的过程、指导和限制的其他信息。
PPD 管理器 (ppdmgr) 实用程序位于 /usr/sbin/ppdmgr 中。
要将 PPD 文件添加到系统中,应使用以下语法:
ppdmgr -a ppd-file-path |
-a 选项可用于将在 ppd-file-path 中指定的 PPD 文件复制到 PPD 系统信息库中,然后更新 PPD 高速缓存文件,以反映所做的更改。如果您没有使用 -R 选项指定 PPD 文件系统信息库,则 PPD 文件会存储在 user PPD 文件系统信息库中。如果您没有使用 -L 选项指定标签,则 PPD 文件会存储在 user 标签目录中。
结合使用 -a 选项和 ppdmgr 实用程序时,将会执行以下验证:
标签验证-标签名不得是保留的标签名。
以下标签名被保留:
caches
ppdcache
manufaliases
all
PPD 文件路径验证-指定的 ppd-file-path 必须可访问,且必须包含 .pdd 或 ppd.gz 扩展名。
PPD 文件验证-在 ppd-file-path 中指定的 PPD 文件必须是有效的 PPD 文件。
如果您提供的信息未通过各种验证检查,或者如果 ppdmgr 实用程序执行的任何操作未成功,则将显示一条错误消息,且该实用程序将退出。
执行的其他操作:
如果需要,将会创建目标路径的父目录。
如果扩展名为 .gz 的 PPD 文件版本已存在于 PPD 文件系统信息库中,且压缩的版本不重复,则将显示一条错误消息。
ppd-file-path 将被复制到目标路径。
为反映 ppdcache 文件中的更改,随后将应用更新操作。
要指定 PPD 文件系统信息库,应使用以下语法:
ppdmgr -R repository |
带有 repository 的 -R 选项用于标识受支持的 PPD 文件系统信息库之一。如果未指定 -R 选项,则缺省的 repository 为 user。随 -a 选项一起指定 -R 选项时,有效的系统信息库名称为 user 和 admin。有关所有受支持的系统信息库名称及其位置的更多信息,请参见PPD 文件系统信息库。
要指定标签,应使用以下语法:
ppdmgr -L label-name |
带有 label-name 的 -L 选项用于标识 PPD 文件系统信息库中的一组 PPD 文件。标签也是位于 PPD 文件系统信息库中的目录的名称。标签可由可移植字符集中的任何字符组成。但是,标签不能包含分号 (;)。
如果没有指定 -L 选项,则以下为用于指定标签名的缺省选项。
ppdmgr 命令行选项 |
缺省标签 |
---|---|
-a |
如果 ppd-file-path 位于受支持的系统信息库中,则缺省为 ppd-file-path 中的 label。否则,label 缺省为 user。 |
-r |
缺省为 all 标签。 |
-u |
缺省为 all 标签。 |
要请求更新 PPD 高速缓存文件,应使用以下语法:
ppdmgr -u |
此选项可用于更新高速缓存文件,以反映 PPD 文件系统信息库中的修改。只有在检测到修改时,才会更新 PPD 高速缓存文件。
如果指定了 -a 选项,则将自动更新 PPD 高速缓存文件,以反映在其中复制 PPD 文件的系统信息库中标签目录中的更改。
如果未指定 -R 或 -L 选项,则将更新 PPD 高速缓存文件,以反映 user 系统信息库中 all 标签目录中的修改。
要请求重新生成 PPD 高速缓存文件,应使用以下语法:
ppdmgr -r |
-r 选项通过删除并重新生成与指定的 PPD 文件系统信息库中指定标签关联的任何中间高速缓存文件,来重新生成高速缓存。如果删除了任何中间高速缓存文件,则此操作会导致更新 PPD 高速缓存文件 /var/lp/ppd/ppdcache。由于需要在指定的 PPD 文件系统信息库重新生成指定的标签,因此重新生成 PPD 高速缓存信息可能非常耗时。重新生成 PPD 高速缓存文件所用的时间取决于受影响的 PPD 文件的数目。因此,只有在怀疑 PPD 高速缓存文件损坏时,才应使用 -r 选项。
如果没有指定 -R 或 - L 选项,则将删除与 user PPD 文件系统信息库中所有标签关联的中间高速缓存。这些修改随后将反映在 PPD 高速缓存文件中。
要显示系统信息库中 PPD 文件的完整路径,应使用以下语法:
ppdmgr -a ppd-file-path -w |
-w 选项必须随 -a 选项一起指定 ,并将 PPD 文件成功添加到系统中,PPD 文件的完整目标路径才会显示在 stdout 中。否则,将忽略此选项。
本节包含有关 FSG OpenPrinting 开放标准打印应用编程接口 (Print Application Programming Interface, PAPI) 的其他背景信息,该接口是独立于打印服务的接口,用于访问本地主机或网络上的打印支持。
PAPI 包含一组与打印相关的对象或数据结构,以及一组用于处理对象的操作或功能。
以下是支持的任务:
查询打印服务
提交打印作业
修改打印作业
取消打印作业
表 12–13 介绍了已经过修改可用于 PAPI 的打印命令。
表 12–13 已修改的打印命令
命令 |
起源 |
功能 |
---|---|---|
lpr |
BSD |
提交打印作业。 |
lpq |
BSD |
查询打印队列和打印作业。 |
lprm |
BSD |
删除打印作业。 |
lpc |
BSD |
控制打印作业: accept、reject、enable、 disable、clear、topq |
lp |
SysV |
提交打印作业。 |
lpstat |
SysV |
查询打印服务器(打印队列、打印作业及其他)。 |
cancel |
SysV |
删除打印作业。 |
lpmove |
SysV |
在本地打印队列之间移动作业。 |
accept |
SysV |
允许在打印队列中对打印作业进行排队。 |
reject |
SysV |
禁止在打印队列中对打印作业进行排队。 |
enable |
SysV |
允许在打印队列中处理作业。 |
disable |
SysV |
禁止在打印队列中处理作业。 |