JavaScript is required to for searching.
跳过导航链接
退出打印视图
系统管理指南:打印     Oracle Solaris 10 1/13 Information Library (简体中文)
search filter icon
search icon

文档信息

关于本书

1.  关于在 Oracle Solaris 操作系统中进行打印的简介

2.  计划打印(任务)

3.  设置网络打印服务(任务)

4.  使用 Oracle Solaris 打印管理器设置和管理打印机(任务)

5.  使用 LP 打印命令设置打印机(任务)

6.  使用 LP 打印命令管理打印机(任务)

7.  定制 LP 打印服务和打印机(任务)

定制打印服务(任务列表)

定制 LP 打印服务

调整打印机的端口特征

如何调整打印机的端口特征

为不支持的打印机添加 terminfo

如何为不支持的打印机添加 terminfo

定制的打印机接口程序

标准打印机接口程序

定制 stty 模式

退出代码

故障消息

使用定制的打印机接口程序

如何设置定制的打印机接口程序

8.  管理 LP 打印调度程序和打印请求(任务)

9.  管理网络上的打印机(任务)

10.  管理字符集、过滤器、表单和字体(任务)

11.  使用 PPD 文件管理实用程序管理打印机(任务)

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

13.  Oracle Solaris OS 中的打印问题故障排除(任务)

A.  使用 Internet 打印协议

词汇表

索引

定制打印服务(任务列表)

表 7-1 定制 LP 打印服务(任务列表)

任务
说明
参考
添加不支持打印机的 terminfo 项。
terminfo 数据库中添加项,以初始化不支持的打印机并建立必需的设置。
设置定制的打印机接口程序。
如果有标准打印机接口程序不支持的打印机,则可以提供定制的打印机接口程序。
调整打印机的端口特征。
使 LP 打印服务设置的打印机端口特征与打印机通信设置兼容。

定制 LP 打印服务

虽然 LP 打印服务旨在提供充分的灵活性,以处理大多数打印机和打印需求,但是 LP 打印服务并不能处理每种可能的情况。您可能有 LP 打印服务的标准功能无法满足的打印请求。或者,您的打印机可能无法很好地适应 LP 打印服务处理打印机的方式。

您可以采用以下方式定制 LP 打印服务:

调整打印机的端口特征

由 LP 打印服务设置的打印机端口特征必须与打印机通信设置兼容。如果 LP 打印服务提供的缺省打印机端口设置对打印机不起作用,请参阅生产商提供的打印机手册,以确定打印机要求 LP 打印服务进行哪些设置。使用 stty 命令可以设置和显示打印机通信设置。

下表显示了 LP 打印服务使用的缺省 stty 设置。

表 7-2 LP 打印服务使用的缺省 stty 设置

选项
说明
-9600
将波特率设置为 9600
-cs8
设置 8 位字节
-cstopb
为每个字节发送一个停止位
-parity
不生成奇偶校验
-ixon
启用 XON/XOFF(也称为 START/STOP 或 DC1/DC3)
-opost
使用此表中后面的所有设置执行“输出后处理”
-olcuc
不将小写映射为大写
-onlcr
将换行更改为回车/换行
-ocrnl
不将回车更改为换行
-onocr
即使在 0 列也输出回车
-n10
在换行符之后不提供延迟
-cr0
在回车之后不提供延迟
-tab0
在制表符之后不提供延迟
-bs0
在退格符之后不提供延迟
-vt0
在垂直制表符之后不提供延迟
-ff0
在换页符之后不提供延迟

如何调整打印机的端口特征

  1. 成为超级用户或承担等效角色。

    角色包含授权和具有特权的命令。有关角色的更多信息,请参见《系统管理指南:安全性服务》中的"配置 RBAC(任务列表)"

  2. 调整打印机的端口特征。
    # lpadmin -p printer-name -o "stty=options"
    -p

    指定要调整其端口特征的打印机名称。

    -o "stty=options"

    设置由 options 指定的端口特征(stty 选项)。可以使用此命令更改多个 stty 选项设置。用单引号将每个选项引起来,并用空格分隔各选项。有关选项的完整列表,请参见 stty(1) 手册页。表 7-2 给出了 LP 打印服务使用的缺省 stty 设置。

  3. 验证是否已更改打印机的端口特征。
    # lpstat -p printer-name -l

示例 7-1 调整打印机的端口特征

此示例说明如何设置打印机 luna 的端口特征。parenb 选项启用奇偶校验/生成。parodd 选项设置奇数奇偶校验生成。cs7 选项将字符大小设置为 7 位。

# lpadmin -p luna -o "stty='parenb parodd cs7'"

示例 7-2 设置终端波特率

此示例说明如何将打印机 venus 的终端波特率设置为 19200。

# lpadmin -p venus -o "stty=19200"

为不支持的打印机添加 terminfo

LP 打印服务使用接口程序和 terminfo 数据库,初始化每台打印机并建立以下设置:

每台打印机在 terminfo 数据库中使用短名称标识。terminfo 数据库要求的短名称与用于设置 TERM shell 变量的名称完全相同。此名称也是在设置打印机时指定的打印机类型。例如,不同类型 PostScript 打印机的项位于 /usr/share/lib/terminfo/P 目录中。SunOS 软件发行版提供的缺省项是 PS(用于 PostScript)和 PSR(用于 PostScript Reverse)。

如果找不到打印机的 terminfo 项,仍可以通过 LP 打印服务使用打印机,但不会自动选择页面大小、间距和字符集。但是,可能无法使每个打印请求的打印机设置保持为正确的模式。

如果不存在与您的打印机类型对应的 terminfo 项,并且您希望以正确模式设置该打印机,则可以执行以下操作之一:

terminfo 数据库中的终端或打印机项包含并定义了数百个项。但 LP 打印服务只使用其中不到 50 个项。有关打印机所需的 terminfo 项目的更多信息,请参见打印机必需的 terminfo

如何为不支持的打印机添加 terminfo


注 - 在创建打印机的 terminfo 项之前,请确保现有的 terminfo 项都不支持该打印机。为此,请尝试用类似打印机的项设置该打印机(如果存在类似打印机)。


  1. 成为超级用户或承担等效角色。

    角色包含授权和具有特权的命令。有关角色的更多信息,请参见《系统管理指南:安全性服务》中的"配置 RBAC(任务列表)"

  2. 确定打印机 terminfo 项的名称。

    /usr/share/lib/terminfo 目录中的目录包含所有有效 terminfo 项。将这些项作为选择打印机名称的指南。

  3. 为打印机创建 terminfo 项文件。

    表 12-6 给出了必须在 terminfo 项中定义以将新打印机添加到 LP 打印服务的项。有关 terminfo 数据库结构的更多详细信息,请参见 terminfo(4) 手册页。

    要开始编写新的 terminfo 项,请使用 infocmp 命令将现有的 terminfo 项保存到文件中。如果有一个 terminfo 项与要创建的项类似,则此命令将非常有用。例如,以下命令将 ps 项保存到 ps_cust 文件(它将成为新的 terminfo 项)。

    infocmp ps > ps_cust

  4. terminfo 项文件编译到 terminfo 数据库中。
    # tic terminfo_entry

    其中 terminfo-entry 变量是您创建的 terminfo 项文件。

  5. 检查新的 terminfo 项文件是否在 /usr/share/lib/terminfo 目录中。

定制的打印机接口程序

如果标准打印机接口程序不支持您的打印机,则可以提供您自己的打印机接口程序。可以复制标准程序,然后指示 LP 打印服务将它用于指定的打印机。首先,需要了解标准程序中的内容。下一节将介绍标准程序。

打印机接口程序应执行以下任务:


注意

注意 - 如果打印机接口程序是早于发行版 3.2 的 UNIX System V 发行版中的打印机接口程序,则它可能适用于 SunOS 5.10 或兼容的 LP 打印服务。但是,在 SunOS 5.10 或兼容的 LP 打印服务中有几个 -o 选项已标准化。这些选项会传递到每个打印机接口程序。它们可能会干扰旧接口使用的具有类似名称的选项。


LP 打印服务(而非打印机接口程序)负责打开打印机端口。打印机端口作为标准输出提供给打印机接口程序。此外,对于打印机接口程序,打印机会标识为“控制终端”,以便在端口“挂起”时将 SIGHUP 信号发送到打印机接口程序。

标准打印机接口程序

标准(模型)打印机接口程序是 /usr/lib/lp/model/standard。LP 打印服务使用该程序设置下表所示的打印缺省值。

表 7-3 缺省的打印机端口特征

特征
缺省设置
缺省过滤器
None
字符间距
None
行间距
None
页宽
None
页长
None
字符集
None
stty 选项
9600 cs8 -cstopb -parenb -parodd ixon -ixany opost -olcuc onlcr -ocrnl -onocr -onlret -ofill nl0 cr0 tab0 bs0 vt0 ff0
退出代码
0

定制 stty 模式

如果需要更改终端特征(如波特率或输出选项),请查找标准打印机接口程序中以下列注释开始的部分:

## Initialize the printer port

有关更多信息,请参见调整打印机的端口特征

退出代码

当打印完成时,接口程序应以显示打印作业状态的代码退出。退出代码是打印机接口程序中的最后一项。

下表说明了退出代码以及 LP 打印服务如何解释它们。

表 7-4 打印机接口程序的退出代码

退出代码
LP 打印服务的解释
0
打印请求已成功完成。如果打印机曾出现故障,则该故障已清除。
1 - 127
打印请求时遇到了问题。例如,有太多非打印字符,或者请求超出打印机功能。LP 打印服务通知提交请求的人员,在打印该请求时出现了错误。此错误不影响将来的打印请求。如果打印机曾出现故障,则该故障已清除。
128
此代码是保留的,供 LP 打印服务使用。接口程序不得以此代码退出。
129
在打印请求时打印机出现故障。此故障不影响将来的打印请求。如果打印机的故障恢复指示 LP 打印服务等待管理员更正问题,则 LP 打印服务禁用打印机。如果故障恢复是继续打印,则 LP 打印服务不禁用打印机。但是,打印服务将在几分钟后再次尝试打印。
>129
这些代码是保留的,供 LP 打印服务使用。接口程序不得以此范围内的代码退出。

如果程序以代码 129 退出,则提醒 root 打印机出现了故障。在清除故障之后,LP 打印服务也必须从头开始重新打印请求。如果不希望重新打印整个请求,则可以使接口程序将故障消息发送到 LP 打印服务。(首先等待清除故障。)在清除故障后,接口程序可以恢复打印文件。完成打印时,打印机接口程序可以提供退出代码 0,就好像从未出现故障。此方法的其他优点: 接口程序可以检测到自动清除故障的时间。这样,管理员就不需要重新启用打印机。

故障消息

可以使用 lp.tell 程序将故障消息发送到 LP 打印服务。此程序由标准打印机接口代码中的 LPTELL shell 变量引用。此程序接收标准输入并将它发送到 LP 打印服务。LP 打印服务将标准输入置于警告管理员打印机出现故障的消息中。如果 lp.tell 程序的标准输入为空,则它不启动警报。有关如何使用 lp.tell 程序的示例,请查看紧跟以下注释的标准打印机接口代码:

# Set up the $LPTELL program to capture fault messages here

如果使用特殊的退出代码 129lp.tell 程序,则打印机接口程序无需禁用打印机本身。接口程序可以直接禁用打印机。但是,这样做将覆盖故障报警机制。仅当 LP 打印服务检测到打印机出现故障,而且特殊的退出代码和 lp.tell 程序是其主要检测工具时,才发送警报。

如果 LP 打印服务必须随时中断文件的打印,则它将使用信号 TERM(陷阱号 15)中止接口程序。有关更多信息,请参见 kill(1)signal(3C) 手册页。如果打印机接口程序由于接收到任何其他信号而中止,则 LP 打印服务会假定以后的打印请求不受影响。因此,LP 打印服务继续使用打印机。LP 打印服务将通知提交请求的用户,说明请求尚未成功完成。

首次调用接口时,将忽略信号 HUP、INT、QUIT 和 PIPE(陷阱号分别为 1、2、3 和 13)。标准接口更改此缺省行为,以便在适当的时间捕获信号。标准接口将接收到这些信号解释为打印机出现问题的警告。当标准接口收到信号时,它将发出故障警报。

使用定制的打印机接口程序

可以创建定制的打印机接口程序,并在打印服务器上使用它来代替标准打印机接口程序。为此,请使用 lpadmin 命令为特定打印机向 LP 打印服务注册该程序。

如何设置定制的打印机接口程序

  1. 在打印服务器上以超级用户 lp 或同等角色的身份登录。
  2. 复制标准打印机接口程序。
    # cp /var/spool/lp/model/standard  custom-interface
  3. 可选如果已具有定制的打印机接口程序,请转到步骤 5
  4. 更改标准打印机接口程序的副本以满足您的需要。

    请参阅标准打印机接口程序中对程序的说明,以确定需要进行哪些更改。

  5. 为特定打印机设置定制的打印机接口程序。
    # lpadmin -p printer-name -i custom-interface
    -p

    指定使用定制的打印机接口程序的打印机。

    -i

    是定制的打印机接口程序的名称。

    已向 LP 打印服务注册定制的打印机接口程序,该程序将在用户提交打印请求时由该打印机使用。

  6. 验证是否在 /etc/lp/printers/printer-name/configuration 文件中添加了定制的打印机接口程序。

示例 7-3 设置定制的打印机接口程序

此示例说明如何为打印机 luna 设置名为 custom 的定制打印机接口程序。

# lpadmin -p luna -i custom

示例 7-4 复制定制的打印机接口程序

此示例说明如何将定制的打印机接口程序从打印机 venus 复制到打印机 asteroid

# lpadmin -p asteroid -e venus