系统管理指南:打印

管理字符集

打印机用来打印各种字体样式的文本的方法是不同的。例如,PostScript 打印机将文本作为图形处理。这些打印机可以生成不同字体的文本。它们还可以在页面上的任何位置、按任何大小或方向放置文本。其他类型的打印机支持的字体样式和大小比较有限。这些打印机使用打印轮、字体盒或预编程的可选字符集。通常,仅有一种打印方法适用于指定的打印机类型。

从 LP 打印服务的角度来看,打印轮和字体盒是类似的。在这两种情况下,必须进行人为干预并根据需要在打印机上挂载硬件。要求您以物理方式挂载打印轮或字体盒的字符集称为硬件字符集。不要求挂载硬件的字符集是打印机附带的,并已预编程。这些字符集可以由打印请求进行选择。它们称为软件字符集

设置非 PostScript 打印机时,您需要告知 LP 打印服务哪些打印轮或可选字符集可供用户使用。用户提交打印请求时,可通过 lp -S 命令指定用于打印作业的打印轮或可选字符集。用户不必知道要应用哪种类型的字符集。他们只需按您定义的名称引用字体样式即可。例如,可以将打印轮定义为 gothic。要请求 gothic 打印轮,用户可以使用以下命令:


% lp -S gothic filename

可选字符集

打印机支持的可选字符集在该打印机的 terminfo 项中列出。例如,ln03 打印机的相应项是 /usr/share/lib/terminfo/l/ln03。您可以使用 tput 命令在 terminfo 数据库中找到任何打印机类型的可选字符集的名称。tput 命令的语法如下:


tput -T printer-type csn

csn 选项是字符集编号的缩写。该编号从 0 开始(在初始化打印机之后,缺省的字符集编号始终为 0)。要显示其他字符集的名称,可以用 -1-2-3 等替换 -0 重复执行该命令。对于每个可选字符集,都会返回 terminfo 名称,例如 usasciienglishfinnish 等。

通常,terminfo 字符集名称应该与制造商的打印机文档中使用的字符集名称近似匹配。由于并非所有的生产商都使用相同的字符集名称,因此 terminfo 字符集名称可以随打印机类型的不同而不同。

您不必向 LP 打印服务注册可选字符集名称。但是,可以为它们提供更有意义的名称或别名。


注 –

如果不指定可用于打印机的可选字符集,则 LP 打印服务将假定该打印机可接受任何字符集名称(如 cs0cs1cs2)或打印机可识别的 terminfo 名称。

使用 lpstat -p -l 命令时,不会列出 PostScript 打印机的字符集。PostScript 字体由 PostScript 过滤器而不是 terminfo 数据库中的项来控制。有关如何管理 PostScript 字体的信息,请参见管理字体


用户可以使用 lpstat -p -l 命令显示您在打印服务器上为每个打印机定义的可选字符集的名称。

硬件字符集

另一种获取替换字符集的方法是,使用打印机中以物理方式连接或挂载的可移除打印轮或字体盒。

要管理硬件挂载的字符集,请通知 LP 打印服务以下信息:

然后,当用户使用 lp -S 命令请求特定字符集时,打印调度程序会发送要求挂载打印轮的警报。此外,还会将打印请求放置在打印队列中。挂载正确的打印轮并通知 LP 打印服务已挂载打印轮之后,将会打印作业。有关更多信息,请参见如何卸载和挂载打印轮或字体盒

如果没有为打印机指定多个打印轮或字体盒,则 LP 打印服务会假定打印机具有单个固定的打印轮或字体盒。同样,用户在使用该打印机时不能指定特殊的打印轮或字体盒。

与可选字符集不同,用于打印轮或字体盒的名称不与 terminfo 数据库中的项关联。打印轮名称或字体盒名称仅用于与 LP 打印服务及其用户进行通信。

但是,为打印轮或字体盒选择的名称对于用户来说应该是有意义的。这些名称应该引用字体样式。此外,这些名称在具有类似打印轮、字体盒或可选字符集的打印机中应是相同的。这样,用户就可以指定字体样式(字符集),而不管将使用哪台打印机,或者是否将使用打印轮、字体盒或可选字符集。

对于打印轮名称或字体盒名称的含义,您和打印机用户应该意见一致。否则,用户要求的和您挂载的可能不是相同的字符集。

跟踪打印轮

跟踪打印轮的过程与跟踪表单的过程类似。一些打印机(通常为信函质量打印机)具有提供特定字体或字符集的可移除打印头。可移除打印头包括打印轮和打印盒。用户可以请求指定的字符集。如果该字符集不可用,则 LP 打印服务将向 root 通知该请求。在更换打印轮之前,作业将一直存储在打印队列中。

用于挂载打印轮或字体盒的警报

请求用于挂载打印轮或字体盒的警报的方式,与从 LP 打印服务请求其他警报的方式相同。有关警报的常规信息,请参见使用 LP 打印命令设置打印机故障恢复

Procedure如何定义打印轮或字体盒

以下过程说明如何定义可以用于打印机的打印轮或字体盒。

  1. 在打印服务器上,成为超级用户或同等角色。

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

  2. 定义打印轮或字体盒。


    # print-server lpadmin -p printer-name -S hard-charset1[,hard-charset2...]
    -p printer-name

    指定要为其定义打印轮或字体盒的打印机的名称。

    -s hard-charset

    指定打印轮或字体盒的硬件字符集名称。

    您可以使用此命令指定多个硬件字符集。使用逗号或空格来分隔字符集名称。如果使用空格,请用引号将字符集名称的列表引起来。

    定义对用户来说有意义的名称。将这些名称通知用户。

    打印轮或字体盒的定义在打印服务器的 /etc/lp/printers/printer-name /configuration 文件中指定。

  3. 在打印服务器的打印客户机上,以超级用户 lp 或同等角色的身份登录。

  4. 为打印客户机定义相同的打印轮或字体盒。


    # print-client lpadmin -p printer-name -S hard-charset1, hard-charset2...
    

    此命令中的变量与步骤 2 中的变量相同。

    打印轮或字体盒的定义将添加到打印客户机的 /etc/lp/printers/ printer-name/configuration 文件中。

  5. 对于可能需要使用打印轮或字体盒的每台打印客户机,重复步骤 3步骤 4

  6. 验证是否已定义打印轮或字体盒。

    您应该看到字符集的名称以及注释 (mounted)


    # lpstat -p printer-name -l
    

示例 10–1 定义打印轮

以下示例说明如何在打印机 luna 上定义 pica 打印轮。打印客户机的名称是 asteroid


asteroid# lpadmin -p luna -S pica

Procedure如何卸载和挂载打印轮或字体盒

  1. 在打印服务器上,成为超级用户或同等角色。

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

  2. 卸载已在打印机中挂载的打印轮或字体盒。


    # lpadmin -p printer-name -M -S none
    
    -p printer-name

    指定要卸载打印轮或字体盒的打印机。

    -M -S none

    指示要卸载当前的打印轮或字体盒。

    有关更多信息,请参见 lpadmin(1M) 手册页。

    将当前的打印轮或字体盒从打印服务器的 /etc/lp/printers/printer-name/configuration 文件中删除。

  3. 从打印机中移除打印轮或字体盒。

  4. 在打印机中放置新的打印轮或字体盒。

  5. 挂载新的打印轮或字体盒。


    # lpadmin -p printer-name -M -S hard-charset...
    
    -p printer-name

    指定要挂载打印轮或字体盒的打印机。

    -M -S hard-charset

    指定要挂载的打印轮或字体盒的硬件字符集名称。

    将打印轮或字体盒添加到打印服务器的 /etc/lp/printers/printer-name/configuration 文件中。挂载的打印轮或字体盒将一直处于活动状态,直到将其卸载或挂载了新的打印轮或字体盒。

  6. 在以下命令的输出中,检查 Print wheelsCharacter set 标题下的信息。

    您应该看到打印轮或字符集的名称以及注释 (mounted)


    # lpstat -p printer-name -l
    

示例 10–2 卸载和挂载打印轮

以下示例说明如何卸载打印机 luna 上的当前打印轮并挂载 pica 打印轮。


# lpadmin -p luna -M -S none
# lpadmin -p luna -M -S pica

Procedure如何设置要求挂载打印轮或字体盒的警报

  1. 在打印服务器上,成为超级用户或同等角色。

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

  2. 设置要求挂载打印轮或字体盒的警报。


    # lpadmin -S hard-charset -A alert [-Q requests] [-W minutes]
    -S hard-charset

    指定要为其设置警报的打印轮或字体盒的硬件字符集名称。

    -A alert

    指定在请求打印轮或字体盒时将出现的警报类型。有关 alert 的有效值的详细信息,请参见表 6–5。其中一些有效值包括 mailwritequiet

    如果指定 mailwrite,则预定义的警报消息会指示应挂载指定的打印轮或字体盒。该信息包括已设置为使用这类打印轮或字体盒的一台或多台打印机的名称。

    -Q requests

    指定在出现警报之前必须排在队列中的、需要打印轮或字体盒的打印请求的数目。如果不指定此选项,则队列中仅有一个打印请求时便会触发警报。

    -W minutes

    指定出现警报的间隔时间(以分钟为单位)。如果不指定此选项,则将发送一次警报。

    有关更多信息,请参见 lpadmin(1M) 手册页。

    警报将添加到打印服务器的 /etc/lp/pwheels/charset-name/alert.sh 文件中。

  3. 通过检查以下命令的输出,验证是否为打印轮或字体盒添加了警报。


    # lpadmin -S hard-charset -A list
    

    或者,如果您设置的用于触发警报的打印请求数较小,请提交足够多的打印请求以满足最低要求。请确保收到了要求挂载打印轮或字体盒的警报。


示例 10–3 设置要求挂载打印轮的警报

以下示例说明在打印队列包含 elite 打印轮的 10 个打印请求时,如何将 elite 的电子邮件警报设置为每 5 分钟出现一次。


# lpadmin -S elite -A mail -Q 10 -W 5


示例 10–4 设置要求挂载字体盒的警报

以下示例说明在打印队列包含 finnish 字体盒的 5 个打印请求时,如何将 finnish 的电子邮件警报设置为每分钟出现一次。


# lpadmin -S finnish -A mail -Q 5 -W 1


示例 10–5 取消设置打印轮的警报

以下示例说明如何取消设置 elite 打印轮的警报。


# lpadmin -S elite -A none

Procedure如何设置可选字符集的别名

如果可选字符集的 terminfo 名称是适当的,则无需执行此过程。有关使用 terminfo 数据库的更多信息,请参见为不支持的打印机添加 terminfo

  1. 在打印服务器上,成为超级用户或同等角色。

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

  2. 显示指定打印机类型的可选字符集的名称。


    # tput -T printer-type csn
    
    -T printer-type

    指定在 terminfo 数据库中找到的打印机类型。有关 terminfo 数据库中项的信息,请参见打印机类型

    n

    指定表示所指定打印机类型的可选字符集的编号(0、1、2、3、4、5 等)。系统会显示可选字符集的名称,后跟提示符号。例如,cs1 可能会使系统显示 english#

    有关更多信息,请参见 tput(1) 手册页。

  3. 设置可选字符集的别名。


    # lpadmin -p printer-name -S select-charset1=alias1,select-charset2=alias2...
    
    -p printer-name

    指定要在其中设置可选字符集别名的打印机。

    -Sselect-charset

    指定可选字符集的名称。该名称可以在步骤 2 中找到。

    alias

    指定可选字符集的别名。除了可选字符集名称外,还可以使用此别名。

    您可以使用此命令设置多个别名。使用逗号或空格来分隔各个别名。如果使用空格,请用引号将别名列表引起来。

    别名将添加到打印服务器的 /etc/lp/printers/printer-name/configuration 文件中。

  4. 在作为打印服务器的打印客户机的系统上,以超级用户 lp 或同等角色的身份登录。

  5. 设置可选字符集的别名。


    # lpadmin -p printer-name -S select-charset1=alias1,select-charset2=alias2...
    

    此命令中的变量与步骤 3 中的变量相同。

    别名将添加到打印客户机的 /etc/lp/printers/printer-name/configuration 文件中。

  6. 对可能需要使用别名的每台打印客户机,重复步骤 4步骤 5

  7. 在打印服务器和打印客户机上,验证在以下命令的输出中是否列出了可选字符集别名。


    # lpstat -p printer-name -l
    

    或者,提交使用可选字符集别名的打印请求,然后检查输出。


示例 10–6 设置可选字符集的别名

以下示例说明如何显示打印机 lunausascii 可选字符集的可选字符集名称。打印机 luna 属于 ln03 打印机类型。此示例还说明如何将文本指定为 usascii 可选字符集的别名。


# tput -T ln03 cs0
usascii# tput -T ln03 cs1
english# tput -T ln03 csn2
finnish# tput -T ln03 csn3
japanese# tput -T ln03 cs4
norwegian#
# lpadmin -p luna -S usascii=text