系统管理指南:打印

第 12 章 在 Oracle Solaris 操作系统中打印(参考)

本章提供有关以下功能的参考信息:

Solaris Print Manager

本节提供适用于使用 Solaris Print Manager 设置和管理打印机的附加参考信息。

Solaris Print Manager 和特殊字符

Solaris Print Manager 会检查用户在输入屏幕中针对各个文本字段的输入。有以下两种类型的检查: 一般非法输入和特定字段的非法输入。

Solaris Print Manager 不接受以下字符作为输入(帮助屏幕除外):

打印机定义

以下章节介绍可以使用 Solaris Print Manager 设置的每种打印机定义:

打印机名称

将打印机添加到系统时,会为打印机指定打印机名称

打印机名称必须遵循以下指导:

建立适用于您站点的命名约定。例如,网络中具有不同类型的打印机时,在打印机名称中包括打印机类型,可以帮助用户选择合适的打印机。例如,您可能会用字母 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 –

如果在基于 x86 的系统上使用多个端口,则缺省情况下仅启用第一个端口。缺省情况下,禁用第二个端口和任何后续端口。要使用多个端口,您必须手动编辑其他各个 asy(串行)端口或 ecpp(并行)端口的设备驱动程序端口配置文件。x86 端口配置文件的路径名如下所示:

/kernel/drv/asy.conf

/kernel/drv/ecpp.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 打印服务此类型文件内容可以直接进行打印而不必进行任何过滤。要在不过滤的情况下打印,打印机中还必须安装所需的字体。对于其他类型的文件,必须设置和使用过滤。

大多数打印机可以直接打印以下类型的文件:

在提交文件以进行打印时,用户可以使用 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 

simplepostscript

PostScript 文件和 ASCII 文件不需要过滤。 

无 

""

除与打印机类型匹配的那些文件外,所有文件都需要过滤。 

任何 

any

不需要过滤。如果打印机无法直接处理文件内容类型,则不会打印文件。 

选择与打印机功能最匹配的文件内容类型。PostScript 是 Solaris Print Manager 中的缺省选择,大多数情况下很可能是正确的。PostScript 表示 PostScript 文件无需过滤。

打印机生产商

使用 PPD 文件设置打印机时,打印机生产商是打印机生产商的名称。可以在打印机本身以及打印机附带的包装材料和文档上找到打印机生产商。

下面是在此发行版中可用的打印机生产商示例:

打印机型号

打印机生产商可以生产若干类型和型号的打印机。使用 PPD 文件设置打印机时,打印机型号准确定义打印机。型号通常压印在打印机的前部或顶部。在打印机附带的包装材料和文档上也显示此信息。

下面是在此发行版中可用的打印机型号示例:

打印机驱动程序

打印机驱动程序是在您为指定的打印机生产商和打印机型号选择 PPD 文件时确定的。

打印机目标

此打印机定义指定了目标打印机的主机名、IP 地址或 URI。此定义适用于网络连接的打印机。

可以使用以下格式指定打印机 URI:

网络协议

此打印机定义指定了要在打印服务器与打印机之间使用的协议。当前选择为 BSD、TCP 和 URI 网络协议。此打印机定义仅适用于网络连接的打印机。

故障通知

此打印机定义用于指定在检测到打印机故障时是否发送通知,以及应如何发送通知。

缺省打印机

缺省打印机是未在命令行中指定打印机时或未使用打印工具指定打印机时,打印系统命令所使用的打印机。有关使用 LP 打印命令设置缺省打印机目标的更多信息,请参见使用 LP 打印命令设置缺省打印机目标

标题页

标题页是在请求打印作业时打印的第一页。可以将标题页设置为总是打印、有选择性地打印或从不打印。有关使用 LP 打印命令指定标题页选项的更多信息,请参见使用 LP 打印命令打印标题页

用户访问列表

用户访问列表指定了允许从指定打印服务器打印的用户的列表。有关使用 LP 打印命令限制用户对打印机的访问的更多信息,请参见使用 LP 打印命令限制用户对打印机的访问

打印机类

打印机类是打印机的集合。转至某类打印机的打印请求由该类中第一个可用的打印机进行处理有关使用 LP 打印命令定义打印机类的更多信息,请参见使用 LP 打印命令设置打印机类

故障恢复

您可以找出有关打印故障的原因,以便可以更正问题。故障恢复选项是使用带有 -F 选项的 lpadmin 命令来定义的。有关使用 LP 打印命令设置故障恢复的更多信息,请参见使用 LP 打印命令设置打印机故障恢复

LP 打印服务

本节介绍 LP 打印服务的目录结构、文件和日志。

LP 打印服务命令


注 –

LP 打印服务客户机命令已经过修改,可以使用 FSG OpenPrinting 开放标准打印 API (Print API, PAPI)。这些打印命令位于 PAPI 的上面一层。有关更多信息,请参见PAPI 在 Oracle Solaris OS 中的实现方式


下表列出经常使用的 LP 打印服务命令。

表 12–2 LP 打印服务命令

命令 

任务 

手册页 

enable

激活打印机 

enable(1)

cancel

取消打印请求 

cancel(1)

lp

将一个或多个文件发送到打印机 

lp(1)

lpstat

报告 LP 打印服务的状态 

lpstat(1)

disable

取消激活一台或多台打印机 

enable(1)

accept

允许打印请求为特定目标进行排队 

accept(1M)

reject

阻止打印请求为特定目标进行排队 

accept(1M)

lpadmin

设置或更改打印机配置 

lpadmin(1M)

lpfilter

设置或更改过滤器定义 

lpfilter(1M)

lpforms

设置或更改预先打印的表单 

lpforms(1M)

lpadmin

挂载表单 

lpadmin(1M)

lpmove

将输出请求从一个目标移动到另一个目标 

lpmove(1M)

lpsched

启动 LP 打印服务调度程序 

lpsched(1M)

lpshut

停止 LP 打印服务调度程序 

lpshut(1M)

lpusers

设置或更改用户可以请求的 LP 打印服务的缺省优先级和优先级限制  

lpusers(1M)

有关已经过修改可用于 PAPI 的打印命令的信息,请参见PAPI 在 Oracle Solaris OS 中的实现方式

LP 打印服务的功能

LP 打印服务可执行以下功能:

守护进程和 LP 内部文件

/usr/lib/lp 目录包含由 LP 打印服务使用的守护进程和文件,如下表所述。

表 12–3 /usr/lib/lp 目录的内容

文件 

类型 

说明 

bin

目录 

包含用于生成打印警报、慢速过滤器和队列管理程序的文件。 

model

目录 

包含标准打印机接口程序。 

postscript

目录 

包含 LP 打印服务提供的所有 PostScript 过滤器程序。这些过滤器随 /etc/lp/fd 目录中的描述符文件一起提供。这些文件会通知 LP 打印服务过滤器的特征以及它们的位置。

LP 打印服务目录

LP 打印服务的文件分布在下表中显示的目录中。

表 12–4 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 信息的接口脚本的位置。

LP 打印服务配置文件

lpsched 守护进程在 /etc/lp 目录中存储配置信息,如下表所述。


注意 – 注意 –

此表中列出的配置文件是专用接口。这些文件在将来的发行版中可能会更改。您不应生成依赖于当前位置的这些文件或依赖于当前所用格式的数据的软件。


表 12–5 /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 目录包含系统可识别的每个本地打印机的子目录。以下示例显示了打印机 sparc1luna/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

terminfo 数据库

/usr/share/lib 目录包含 terminfo 数据库目录。此目录包含许多类型的终端和打印机的定义。LP 打印服务使用 terminfo 数据库中的信息执行以下任务:

每台打印机在 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

以下三个表列出打印机必需的 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

将垂直位置设置为绝对位置 

LP 打印服务日志文件

LP 打印服务维护下表中介绍的两组日志文件。

日志文件名称 

说明 

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 打印服务在以下两个日志文件中记录打印服务的历史记录:lpschedrequests。这些日志文件位于 /var/lp/logs 目录中。您可以使用这些日志文件中的信息诊断和排除打印故障。以下是 /var/lp/logs 目录内容的一个示例:


# cd /var/lp/logs
# ls
lpsched.1    requests    requests.2
lpsched      lpsched.2   requests.1
# 

以下是用于排除故障的两个最重要的日志文件:

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 日志文件中的代码

字母 

行的内容 

=

分隔行,该行包含以下各项: 请求 ID、用户 ID (user ID, UID) 和用户组 ID (group ID, GID)、原始(未过滤的)文件大小的总字节数以及将请求排队的时间。 

z

打印机的名称。 

C

打印的份数。 

D

打印机或类的目标,或者 any 一词。

F

已打印文件的名称。对每个已打印的文件,重复该行。文件按所显示的顺序打印。 

f

(可选)所用表单的名称。 

H

(可选)以下三种特殊处理类型之一: 恢复、暂挂和立即。  

N

(可选)在成功完成打印请求时使用的警报类型。如果通过电子邮件通知用户,则类型用字母 M 表示;如果通过将消息发送到终端来通知用户,则类型用字母 W 表示。

O

(可选)与打印机有关的 -o 选项。例如 nobanner

P

打印请求的优先级。 

p

已打印页的列表。 

r

(可选)当用户使用 lp -r 命令请求对文件进行“原始”处理时包括的单个字母行。

S

(可选)所用的字符集、打印轮或打印盒。 

T

放置在标题页上的标题。 

t

在文件中找到的内容类型。 

U

提交打印请求的用户的名称。 

s

请求的结果,显示为以十六进制格式表示的单个位的组合。多个位由打印服务在内部使用。下表介绍了各个位及其含义。 

v

  • 0-标识打印作业源自 in.1pd 打印守护进程或网络上的其他系统。

  • 2-标识打印作业源自 /usr/bin/lp/usr/ucb/lpr 命令。

  • 1-标识打印作业源自打印软件的较旧版本。

x

(可选)用于打印请求的慢速过滤器。 

Y

(可选)用于打印请求的打印过滤器的特殊模式列表。 

z

(可选)用于请求的打印机。如果已为任何打印机或打印机类请求排队,或者请求已移动到其他目标,则该打印机与目标(D 行)不同。

下表显示了 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 的其他部件进行交互。打印服务使用标准打印机接口程序执行以下操作:

LP 打印服务使用在 /usr/lib/lp/model 目录中找到的标准接口程序,除非您指定了其他程序。您可以创建自定义接口程序。但是,必须确保自定义程序不会终止与打印机的连接或干扰正常的打印机初始化。

支持使用 PPD 文件设置打印机

Oracle Solaris 打印子系统中已并入了使用 PPD 文件设置和管理打印机的支持。提供了两个接口脚本,即 standard_foomaticnetstandard_foomatic。这些接口脚本提供 Solaris 假脱机程序与打印服务器的后端进程之间的通用接口。

以下是支持的打印机类型的示例:

光栅图像处理器支持

借助 Oracle Solaris OS 中的光栅图像支持 (RIP),可以打印到不具备驻留 PostScript 处理功能的打印机。此打印软件提供了打印服务器 RIP 和支持技术。RIP 在后台进行处理。但是,要使用适当的驱动程序,您需要使用 Solaris Print Manager 或 lpadmin -n 命令来配置每台打印机。有关使用 lpadmin -n 命令的逐步说明,请参见如何使用 LP 打印命令添加新的直接连接的打印机

对 PostScript 打印机描述文件的支持

lpadminlpstat 命令,以及 Solaris Print Manager 打印机定义屏幕都支持使用 PPD 文件。

以下新软件包与此功能相关联:

在何处查找有关支持的打印机和可用 PPD 文件的信息


注意 – 注意 –

PPD 文件和 ppdcache 文件的存储位置是专用的,ppdcache 文件的内容也是专用的。这些文件的位置和 ppdcache 的内容可能会更改。请不要生成依赖于当前位置的这些文件或依赖于当前所用格式的数据的软件。


如果打印机需要的文件不可用,则可以添加自己的 PPD 文件。如果使用 lpadmin -n 命令创建新的打印队列,则可以将自己的 PPD 文件存储在所选的任何位置。如果您运行的是 Oracle Solaris 10 OS,并且使用 Solaris Print Manager 来创建打印队列,则 PPD 文件必须在 ppdcache 文件中有一个对应项。

如果您运行的是受支持的 Oracle Solaris 发行版,则 PPD 文件位于系统上的以下四个系统信息库中的任何一个:

/usr/share/ppd

指定 system 系统信息库。

/usr/local/share/ppd

指定 admin 系统信息库。

/opt/share/ppd

指定 vendor 系统信息库。

/var/lp/ppd

指定 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 文件管理实用程序

本节包含有关管理 PPD 文件的参考信息。

使用 ppdmgr 实用程序将 PPD 文件添加到系统时,指定的 PPD 文件的压缩(采用 gzip)副本将存储在系统中。其目的是维护系统上所有已知 PPD 文件中的 PPD 文件信息的当前高速缓存。

复制到系统的 PPD 文件的完整路径如下:


repository/label/manufacturer/ppd-file-name
repository

是指定的系统信息库。如果没有使用 -R 选项指定系统信息库,则缺省系统信息库为用户系统信息库 /var/lp/ppd/

label

是指定的标签。如果没有使用 -L 选项指定标签,则缺省标签为 user 系统信息库中的 user

manufacturer

是 PPD 文件中包含的制造商的名称。此名称可能会根据 /var/lp/ppd/manufaliases 文件中定义的制造商别名进行修改。请参见生产商别名文件

ppd-file-name

与使用 ppdmgr 实用程序指定的原始 PPD 文件名相同。如果压缩了 PPD 文件,则此文件还可以包含 .gz 扩展名。

下图显示了典型 PPD 文件系统信息库的布局以及 ppdmgr 实用程序目录布局(其中包含 ppdmgr 提供和生成的所有相关文件,包括 PPD user 文件系统信息库)。

图 12–1 PPD 文件系统信息库布局

图中显示 PPD 文件系统信息库的目录布局以及所提供和生成的 ppdmgr 文件的目录布局。

PPD 文件系统信息库

下表介绍了位于系统中的 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 文件。 

可以使用 pkgaddpatchadd 命令将 Oracle 提供的 PPD 文件添加到 system 系统信息库中。

不应手动或使用 ppdmgr 实用程序来修改此系统信息库中的 PPD 文件。如果手动修改此系统信息库,则所做的更改可能会丢失。

user

/var/lp/ppd

此系统信息库由管理员和具备适当权限(打印机管理)的用户按照需要使用。 

除非另行指定,否则使用带 -a 选项的 ppdmgr 命令添加到系统的 PPD 文件将被添加到该系统信息库。

vendor

/opt/share/ppd/

此系统信息库是用于存储由供应商提供给 Oracle Solaris 的 PPD 文件的中央位置。 

可以使用 pkgadd 命令将 PPD 文件添加到此系统信息库。


注 –

不能使用 ppdmgr 实用程序修改此系统信息库。



注意 – 注意 –

PPD 文件和 ppdcache 文件的位置是专用的,因此可能会更改。请不要生成依赖于当前位置的这些文件或当前格式的数据的软件。


PPD 文件标签

在运行 Oracle Solaris 软件的系统上,可以将 PPD 文件存储在缺省标签目录中。您还可以指定自己选择的标签以组织 PPD 文件,只要该标签未被系统保留。

以下标签名被保留:

除了 all 标签名以外,不能使用 ppdmgr 实用程序的 -L-R 选项来指定这些标签名。不过,在使用 r-u 选项时可以使用 -L-R 选项来指定 -all 标签名。以 SUNW 开头的任何标签名都被保留供 Oracle 使用,但是并不禁止使用。

如果将 PPD 文件添加到系统中并且指定了一个并不存在的标签,则将在指定的系统信息库中创建具有该标签名的目录。缺省情况下,如果没有指定 PPD 文件系统信息库,则此目录为 /var/lp/ppd/label。有关在将 PPD 文件添加到系统时指定标签的更多信息,请参见ppdmgr 实用程序的命令行选项的说明

Solaris Print Manager 中的打印机驱动程序字段的说明

选择“添加新的打印机(连接或网络)”或“修改打印机属性(连接或网络)”菜单选项时,将显示 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 文件高速缓存

专用的 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 实用程序的命令行选项。此外,还介绍了有关使用 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 实用程序时,将会执行以下验证:


注 –

如果您提供的信息未通过各种验证检查,或者如果 ppdmgr 实用程序执行的任何操作未成功,则将显示一条错误消息,且该实用程序将退出。


执行的其他操作:

要指定 PPD 文件系统信息库,应使用以下语法:


ppdmgr -R repository

带有 repository-R 选项用于标识受支持的 PPD 文件系统信息库之一。如果未指定 -R 选项,则缺省的 repositoryuser。随 -a 选项一起指定 -R 选项时,有效的系统信息库名称为 useradmin。有关所有受支持的系统信息库名称及其位置的更多信息,请参见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 中。否则,将忽略此选项。

PAPI 在 Oracle Solaris OS 中的实现方式

本节包含有关 FSG OpenPrinting 开放标准打印应用编程接口 (Print Application Programming Interface, PAPI) 的其他背景信息,该接口是独立于打印服务的接口,用于访问本地主机或网络上的打印支持。

PAPI 包含一组与打印相关的对象或数据结构,以及一组用于处理对象的操作或功能。

以下是支持的任务:

已修改的打印命令

表 12–13 介绍了已经过修改可用于 PAPI 的打印命令。

表 12–13 已修改的打印命令

命令 

起源 

功能 

lpr

BSD 

提交打印作业。 

lpq

BSD 

查询打印队列和打印作业。 

lprm

BSD 

删除打印作业。 

lpc

BSD 

控制打印作业: 

acceptrejectenable disablecleartopq

lp

SysV 

提交打印作业。 

lpstat

SysV 

查询打印服务器(打印队列、打印作业及其他)。 

cancel

SysV 

删除打印作业。 

lpmove

SysV 

在本地打印队列之间移动作业。 

accept

SysV 

允许在打印队列中对打印作业进行排队。 

reject

SysV 

禁止在打印队列中对打印作业进行排队。 

enable

SysV 

允许在打印队列中处理作业。 

disable

SysV 

禁止在打印队列中处理作业。