系统管理指南:打印

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

本章提供有关管理具有特定打印机(这些打印机已使用 LP 打印服务或 Solaris Print Manager 进行配置)的系统上的字符集、过滤器、表单和字体的概述信息和程序。

下面列出了本章中的信息:

管理字符集(任务图)

任务 

说明 

参考 

定义打印轮或字体盒。 

定义可以用于打印机的打印轮或字体盒。 

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

卸载或挂载打印轮或字体盒。 

从打印服务器的配置文件中删除当前的打印轮或字体盒。将新的打印轮或字体盒添加到打印服务器的配置文件。 

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

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

为打印请求设置电子邮件警报。 

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

设置可选字符集的别名。 

当可选字符集的 terminfo 名称不适当时设置别名。

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

管理字符集

打印机用来打印各种字体样式的文本的方法是不同的。例如,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

管理打印过滤器(任务图)

任务 

说明 

参考 

创建新的打印过滤器。 

为 LP 打印服务无法解释的文件类型创建新的打印过滤器。 

如何创建新的打印过滤器

添加打印过滤器。 

添加有关打印过滤器的信息,打印过滤器是将文件的内容类型转换为目标打印机可接受的内容类型的程序。 

如何添加打印过滤器

删除打印过滤器。 

删除有关打印过滤器的信息,打印过滤器是将文件的内容类型转换为目标打印机可接受的内容类型的程序。 

如何删除打印过滤器

查看有关打印过滤器的信息。 

删除有关打印过滤器的信息,打印过滤器是将文件的内容类型转换为目标打印机可接受的内容类型的程序。 

如何查看有关打印过滤器的信息

创建新的打印过滤器

LP 打印服务在必须打印一种打印机无法解释的类型的文件时,都会使用过滤器。创建新的打印过滤器很困难,而且通常需要进行大量的试验。

定义新打印过滤器的过程包括以下两步:

根据需要,打印过滤器可以是简单的或复杂的。过滤器包含输入类型、输出类型以及提供用于在过滤器内处理命令行参数的语言的复杂选项。

如果具有非 PostScript 打印机,则必须根据需要创建和添加打印过滤器。首先,需要了解打印过滤器的内容,以及过滤器程序必须满足的要求。

编写打印过滤器程序

LP 打印服务在 /usr/lib/lp/postscript 目录中提供过滤器程序。这些过滤器涵盖了大多数 PostScript 打印情况(目标打印机要求数据为 PostScript 格式)。打印过滤器程序必须是二进制可执行文件。

过滤器的类型

有以下两种类型的打印过滤器: 快速过滤器和慢速过滤器。

快速过滤器不需要大量的处理时间来准备要打印的文件。它们在运行时必须可以访问打印机。为了能够检测到打印机故障,打印过滤器必须是快速过滤器。将 PRINTER 关键字用作过滤器选项的任何过滤器都必须作为快速过滤器进行安装。

慢速过滤器需要大量的处理时间来准备要打印的文件。它们在运行时不需要访问打印机。慢速过滤器在后台运行,因此它们不会停止打印机,从而允许打印不需要慢速过滤的其他文件。

转换文件

LP 打印服务使用打印过滤器将文件从一种内容类型转换为另一种内容类型。可以为每个打印机指定接受的文件内容类型。用户在提交打印请求时指定文件内容类型。然后,LP 打印服务查找可以打印该内容类型文件的打印机。因为许多应用程序可以生成用于各种打印机的文件,所以此方法通常已经可以满足需要。但是,一些应用程序可能会生成无法在任何可用打印机上打印的文件。

LP 打印服务每次收到打印机无法直接接受其格式的文件类型的打印请求时,都会尝试将打印请求的内容类型与可用的(或指定的)打印机的内容类型进行匹配。如果存在匹配项,则可以直接将文件发送到打印机,而不进行过滤。如果找不到匹配项,或者内容类型指定需要使用过滤器,则 LP 打印服务尝试将文件的内容类型与可用过滤器的输入内容类型进行匹配。此外,LP 打印服务尝试将过滤器的输出类型与打印机的内容类型进行匹配。当找到合适的过滤器时,将通过过滤器传递打印请求。

处理特殊打印模式

打印过滤器处理特殊打印模式并请求打印特定页。打印要求自定义过滤器的打印请求的任何特征时,需要特殊的打印模式。

过滤器处理以下特征:

LP 打印服务提供这些特征的缺省设置。但是,打印过滤器可以更有效地处理某些特征。例如,一些打印机可以比 LP 打印服务更有效地处理多个副本。因此,在这种情况下,可以为多副本页面控制提供过滤器。

检测打印机故障

每个打印机都有自己的方法来检测打印机故障和将故障信号传输到 LP 打印服务。LP 打印服务仅检查在打印时是否存在挂起(载体丢失)和过长的延迟。

一些打印机可以检测很多故障,并可以发送描述故障原因的消息。其他打印机通过使用除载体丢失信号或关闭数据流信号之外的信号来指示故障。解释此附加的打印机故障信息需要过滤器。

过滤器还可以挂起打印请求,等待清除打印机故障,然后恢复打印。借助此功能,不需要全部重新打印已中断的打印请求。只有知道打印机所用控制序列的过滤器才能确定文件中的分页位置。因此,只有这样的过滤器才可以在清除故障之后找到文件中应开始打印的位置。

当打印过滤器生成消息时,那些消息由 LP 打印服务处理。如果启用了警报,则 LP 打印服务将警报发送给系统管理员。有关详细信息,请参见使用 LP 打印命令设置打印机故障警报

打印过滤器程序的要求

无论打印过滤器简单或复杂,都必须满足以下要求:

如果希望过滤器检测打印机故障,则还应该满足以下要求:

创建打印过滤器定义

打印过滤器定义通知 LP 打印服务有关过滤器、要运行的打印过滤器程序、打印过滤器执行的转换种类等的信息。在 /etc/lp/fd 目录中提供了一组过滤器描述符文件。这些文件描述过滤器的特征(例如,快速过滤器或慢速过滤器),并指向过滤器程序(例如 /usr/lib/lp/postscript/postdaisy)。

定义新的打印过滤器时,必须创建打印过滤器定义。

打印过滤器定义包含 LP 打印服务所用的以下信息:

可以将特征作为直接输入键入 lpfilter 命令中。还可以创建一个指定过滤器特征的文件,并将该文件的名称作为 lpfilter 命令参数的输入。这样的文件称为过滤器描述符文件,应位于 /etc/lp/fd 目录中。这些文件本身不是过滤器。但它们指向过滤器。

不管是在文件中存储信息,还是直接在命令行上键入信息,请使用以下格式:


Command: command-pathname [options]
Input types: input-type-list
Output types: output-type-list
Printer types: printer-type-list
Printers: printer-list
Filter type: fast or slow
Options: template-list

注 –

如果为除 Options 之外的任何过滤器特征提供多个定义(即多行),则打印服务仅使用第二个定义。


信息可以按任何顺序进行排列,并不是所有信息都是必需的。如果不指定值,则缺省情况下赋予下表所示的值。这些值不是非常有用,这就是应指定值的原因。

表 10–1 lpfilter 命令的缺省值

项 

缺省值 

Input types(输入类型) 

any

Output type(输出类型) 

any

Printer types(打印机类型) 

any

Printers(打印机) 

any

Filter type(过滤器类型) 

slow

lpfilter 命令

使用过滤器程序的全路径。如果存在程序始终需要的任何固定选项,则此处包括所有选项。

lpfilter 输入类型参数

输入类型是打印过滤器可以处理的文件内容类型的列表。LP 打印服务确实限制输入类型的数目,但是大多数过滤器只能接受一种输入类型。有几种文件类型非常类似,因此过滤器可以处理它们。可以使用喜欢的任何名称,但名称最多只能包含 14 个字母数字字符和短划线。不要将下划线用作输入类型名称的一部分。

LP 打印服务使用这些名称将过滤器与文件类型进行匹配,因此请遵循一致的命名约定。例如,如果多个过滤器可以接受相同的输入类型,则在为每个过滤器指定该输入类型时,请使用相同名称。将这些名称通知用户,以便他们在提交文件进行打印时知道如何标识文件类型。

lpfilter 输出类型参数

输出类型是过滤器可以作为输出生成的文件类型的列表。对于每种输入类型,过滤器将生成一种输出类型。但是,输出类型可能随作业的不同而不同。输出类型的名称不能超过 14 个字母数字字符和短划线。

输出类型的名称应与可用(本地或远程)打印机的类型匹配,或者与其他过滤器处理的输入类型匹配。如果 LP 打印服务发现转换文件需要用不同的过滤器过滤若干遍,则它会将这些过滤器组合在一个 shell 流水线中。您可能不需要此复杂级别,但 LP 打印服务具有此复杂处理功能。请尝试找出这样一组过滤器:它们将用户可能希望打印的所有不同文件作为输入类型,并将那些文件直接转换为打印机可以处理的文件类型。

lpfilter 打印机类型参数

打印机类型是打印过滤器可以将文件转换成的打印机类型的列表。对于大多数打印机和过滤器,可以将过滤器定义的此部分留空,因为此列表与输出类型的列表完全相同。但是,此列表可能是不同的。例如,为达到初始化目的,可能具有仅包含一种打印机类型的打印机。但是,该打印机可以识别几种不同的文件内容类型。在本质上,此打印机具有将各种文件类型转换为它可以处理的过滤器类型的内部过滤器。因此,过滤器可能生成与打印机可以处理的文件类型匹配的几种输出类型之一。应将打印过滤器标记为使用该打印机类型。

作为另一个示例,您可能具有列为接受相同文件类型的两种不同型号的打印机。但是,由于产品制造中的细微差异,一个打印机会偏离它所产生的结果。将打印机标记为不同的打印机类型,比如说 A 和 B,其中 B 是偏离的打印机。创建一个调整文件的过滤器,以说明 B 类型打印机产生的偏差。由于 B 打印机类型才需要此过滤器,因此将此过滤器列为仅在 B 类型打印机上起作用。

lpfilter 打印机参数

打印过滤器通常可以处理接受其输出的所有打印机,因此通常可以跳过过滤器定义的此部分。

但是,可能具有一些不适合于过滤器生成的输出的打印机。例如,可能希望将一台打印机专用于快速周转,仅将不需要过滤的文件发送到该打印机。对于需要先进行广泛过滤才能打印的文件,可以使用类型相同的其他打印机。

lpfilter 过滤器类型参数

LP 打印服务可识别快速过滤器和慢速过滤器,如过滤器的类型中所述。

打印模式通过使用 lp -y 命令调用的慢速过滤器必须运行在从其发出打印请求的系统上。LP 打印服务无法将模式值传递到打印服务器。但是,它可以将文件内容类型(在 lp 命令的 -T 选项之后指定)与打印服务器上的内容类型进行匹配。因此,如果要在打印服务器上激活特殊模式,则必须指定允许 LP 打印服务将输入类型和输出类型进行匹配的内容类型。

lpfilter 选项参数

选项指定如何将不同类型的信息转换为过滤器命令的命令行参数。此信息可以包括来自用户的规范(通过打印请求)、打印机定义和用于处理请求的任何过滤器实现的规范。

使用模板定义打印过滤器选项

定义打印过滤器选项的信息源有 13 个,其中每个信息源都由一个关键字表示。每个选项都是在模板中定义的。模板是过滤器定义中的一条语句,定义要基于过滤器特征之一的值传递到过滤器命令的选项。

在过滤器定义中指定的选项可以不包括任何关键字、包括全部 13 个关键字或 13 个关键字的任何子集。此外,如果完整的过滤器定义需要多个定义,则可以多次定义单个关键字。下表包含可用于在打印过滤器定义中定义选项的 13 个关键字的描述。

表 10–2 打印过滤器选项的关键字

选项特征

关键字 

模式 

示例 

内容类型(输入) 

INPUT

content-type

troff

内容类型(输出) 

OUTPUT

content-type

postscript, impress

打印机类型 

TERM

printer-type

att495

打印机名称 

PRINTER

printer-name

lp1

字符间距 

CPI

scaled-decimal

10

行间距 

LPI

scaled-decimal

6

页长 

LENGTH

scaled-decimal

66

页宽 

WIDTH

scaled-decimal

80

要打印的页数 

PAGES

page-list

1-5,13-20

字符集 

CHARSET

character-set

finnish

表单名称 

FORM

form-name

invoice2

份数 

COPIES

integer

3

特殊模式

MODES

mode

landscape

打印过滤器定义可以包括多个模板。多个模板可在同一行上输入,由逗号分隔;也可在不同的行上输入,在前面加 Options: 前缀。

模板的格式如下: keyword pattern = replacement

keyword 标识为过滤器的特定特征注册的选项类型。

pattern 是关键字的特定选项。

replacement 是关键字具有指定值时发生的情况。

作为如何为特定过滤器定义选项的示例,假定希望打印服务调度程序按照以下条件将打印请求指定给过滤器:

要指定这些条件,请将以下模板作为 lpfilter 命令的选项提供:


Options: OUTPUT impress=-I, OUTPUT postscript=-P

如果 Options 行变得太长,则将每个模板放置在单独的行上,如下所示:


Options: OUTPUT impress=-I
Options: OUTPUT postscript=-P 

在这两个模板中,keyword 被定义为 OUTPUT。在第一个模板中,模式为 impressreplacement 的值为 --I。在第二个模板中,pattern 的值为 postscriptreplacement 的值为 -P

要确定为每种类型的模板(即,对于每个关键字的 patternreplacement 参数)提供哪些值,请考虑以下事项:

replacement 选项显示应如何将模板的值提供给过滤器程序。此部分通常为文字选项,有时包含占位符星号 (*) 以显示将值传递到的位置。patternreplacement 选项还可以使用 ed 命令的正则表达式语法,进行从用户输入选项到过滤器选项的更复杂转换。支持 ed 的所有正则表达式语法,其中包括 \( ... \)\n 结构。这些结构可用于提取 pattern 选项的部分,以复制到 replacement 选项,而 & 选项可用于将整个 pattern 选项复制到 replacement 选项。有关更多信息,请参见 ed(1) 手册页。


注 –

如果在 patternreplacement 选项中包括了逗号或等号 (=),则在该字符前面添加反斜杠 (\)。在使用 patternreplacement 选项时,将删除其中任何字符前面的反斜杠。


Procedure如何创建新的打印过滤器

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

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

  2. 创建打印过滤器程序。

    有关打印过滤器程序的信息,请参见编写打印过滤器程序。按照惯例,PostScript 打印机的过滤器程序位于 /usr/lib/lp/postscript 目录中。应将您创建的程序放置在所选目录中的 /usr/lib/lp 目录下。

  3. 创建打印过滤器定义。

    有关打印过滤器定义的信息,请参见创建打印过滤器定义。应将打印过滤器定义保存在文本文件中。按照惯例,过滤器定义位于 /etc/lp/fd 目录中,并使用 .fd 后缀进行标识。

  4. 将打印过滤器添加到打印服务器。

    有关说明,请参见如何添加打印过滤器


示例 10–7 创建新的打印过滤器

此示例说明用于将 N37Nlp 转换为 simple 的打印过滤器定义。


Input types: N37, Nlp, simple
Output types: simple
Command: /usr/bin/col
Options: MODES expand = -x
Options: INPUT simple = -p -f

在此示例中,打印过滤器程序被命名为 col。在将新的打印过滤器添加到打印服务器后,将对用户的打印请求进行如下处理:

当用户键入以下命令时:


$ lp -y expand report.doc

使用以下参数运行打印过滤器程序以转换文件:


/usr/bin/col -x -p -f

当用户键入以下命令时:


$ lp -T N37 -y expand report.doc

使用以下参数运行打印过滤器程序以转换文件:


/usr/bin/col -x


示例 10–8 通过将一种输入类型转换为其他输出类型来创建新的打印过滤器

此示例说明用于从 troff 转换为 PostScript 文件的打印过滤器定义。


Input types: troff
 Output types: postscript
 Printer types: PS
 Filter type: slow
 Command: /usr/lib/lp/postscript/dpost
 Options: LENGTH * = -l*
 Options: MODES port = -pp, MODES land = -pl
 Options: MODES group \=\([1-9]\) = -n\l

在此示例中,过滤器程序被命名为 dpost。过滤器程序采用一种输入类型 troff,生成 postscript 输出,并适用于 PS (PostScript) 类型的任何打印机。用户在要求页面方向为纵向模式或横向模式时,只需要提供缩写 portland。由于这些选项不是 LP 打印服务所固有的,因此用户必须通过使用 lp -y 命令指定它们。

在将新的打印过滤器添加到打印服务器后,将对打印请求进行如下处理:


管理打印过滤器

打印过滤器是将文件的内容类型转换为目标打印机可接受的内容类型的程序。

LP 打印服务使用过滤器完成以下任务:

并不是每个打印过滤器都可以执行所有这些任务。由于每个任务都是打印机特定的,因此可以单独实现任务。

LP 打印服务提供了表 10–3 中列出的 PostScript 过滤器。过滤器程序位于 /usr/lib/lp/postscript 目录中。对于 PostScript 打印,通常只需在设置打印服务器时安装过滤器程序即可。Solaris Print Manager 会自动启用提供的过滤器。但是,如果管理其他打印机,则可能需要管理它们的打印过滤器。

创建打印过滤器

要创建新的打印过滤器,必须编写打印过滤器程序并创建打印过滤器定义。过滤器包含输入类型、输出类型以及提供用于在过滤器内处理命令行参数的语言的复杂选项。有关更多信息和逐步说明,请参见创建新的打印过滤器

添加、更改、删除和恢复打印过滤器

仅在打印服务器上添加、更换、删除或恢复打印过滤器。

可以使用 lpfilter 命令管理可用过滤器的列表。有关过滤器的系统信息存储在 /etc/lp/filter.table 文件中。lpfilter 命令从过滤器描述符文件中获取要写入表中的有关过滤器的信息。提供的过滤器描述符文件(仅限 PostScript)位于 /etc/lp/fd 目录中。实际的过滤器程序位于 /usr/lib/lp 目录中。

对于可以定义的打印过滤器数目,LP 打印服务没有固定的限制。您可以删除不再使用的过滤器,以避免 LP 打印服务进行多余的处理。(LP 检查所有过滤器以查找适用于特定打印请求的过滤器。)在没有把握的情况下,请不要删除过滤器。

在添加、更改或删除过滤器时,可以覆盖或删除 LP 打印服务提供的一些原始过滤器。如有必要,可以恢复原始的过滤器组。您还可以删除已添加的任何过滤器。

SunOS 软件提供了一组缺省的 PostScript 过滤器。Solaris Print Manager 会自动将这些过滤器添加到打印服务器。与基于 LPD 的打印服务一起使用的一些 TranScript 过滤器具有等效的 SunOS 过滤器功能,但其他 TranScript 过滤器则没有。下表列出了缺省的 PostScript 过滤器并标识了等效的 TranScript 过滤器(如果有)。

表 10–3 缺省的 PostScript 过滤器

PostScript 过滤器 

操作 

等效的 TranScript 过滤器 

download

用于下载字体 

 

dpost

ditroff 更改为 PostScript

psdit

postdaisy

daisy 更改为 PostScript

 

postdmd

dmd 更改为 PostScript

 

postio

用于 PostScript 打印机的串行接口 

pscomm

postior

用于与打印机进行通信 

 

postmd

将点阵灰度级更改为 PostScript 

 

postplot

plot 更改为 PostScript

psplot

postprint

simple 更改为 PostScript

enscript

postreverse

用于颠倒或选择页面 

psrev

posttek

TEK4014 更改为 PostScript

ps4014

SunOS 软件提供以下过滤器:

为了替换 Enscript 而提供了 postreversepostprintpostiodpost 过滤器。

Solaris Print Manager 会将缺省的 PostScript 过滤器添加到打印服务器。如果这些过滤器不能满足您的打印需要,请参见如何创建新的打印过滤器。本节提供有关编写定制打印过滤器的信息。

Procedure如何添加打印过滤器

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

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

  2. 添加基于打印过滤器定义的打印过滤器。


    # lpfilter -f filter-name -F filter-definition
    
    -f filter-name

    指定为打印过滤器选择的名称。

    -F filter-definition

    指定打印过滤器定义的名称。

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

    打印过滤器将添加到打印服务器的 /etc/lp/filter.table 文件中。

  3. 验证是否添加了打印过滤器。


    # lpfilter -f filter-name -l
    

示例 10–9 添加打印过滤器

以下示例说明如何添加具有 daisytroff.fd 打印过滤器定义的 daisytroff 打印过滤器。


# lpfilter -f daisytroff -F /etc/lp/fd/daisytroff.fd

Procedure如何删除打印过滤器

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

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

  2. 删除打印过滤器。


    # lpfilter -f filter-name -x
    
    -f
    filter-name

    指定要删除的打印过滤器的名称。

    -x

    删除指定的过滤器。

    将从打印服务器的 /etc/lp/filter.table 文件中删除打印过滤器。

  3. 验证是否删除了过滤器。


    # lpfilter -f filter-name -l
    

    您应该收到一条错误消息,指示指定名称的过滤器不存在。


示例 10–10 删除打印过滤器

以下示例说明如何删除 daisytroff 打印过滤器。


# lpfilter -f daisytroff -x

Procedure如何查看有关打印过滤器的信息

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

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

  2. 请求有关打印过滤器的信息。


    # lpfilter -f filter-name -l
    
    -f

    指定要查看其信息的打印过滤器。为 filter-name 指定 all 可查看有关所有可用打印过滤器的信息。

    -l

    显示有关指定过滤器的信息。

    显示有关指定的一个或多个打印过滤器的信息。


示例 10–11 查看有关打印过滤器的信息

以下示例说明如何请求有关 postdaisy 打印过滤器的信息。样例命令输出如下所示。


# lpfilter -f postdaisy -l
Input types: daisy
Output types: postscript
Printer types: any
Printers: any
Filter type: slow
Command: /usr/lib/lp/postscript/postdaisy
Options: PAGES * = -o*
Options: COPIES * = -c*
Options: MODES group = -n2
Options: MODES group\=\([2-9]\) = -n\1
Options: MODES portrait = -pp
Options: MODES landscape = -pl
Options: MODES x\=\(\-*[\.0-9]*\) = -x\1
Options: MODES y\=\(\-*[\.0-9]*\) = -y\1
Options: MODES magnify\=\([\.0-9]*\) = -m\1


示例 10–12 查看有关系统上所有打印过滤器的信息

以下示例说明如何显示已添加到系统的所有打印过滤器。样例命令输出如下所示。


# lpfilter -f all -l | grep Filter
(Filter "download")
Filter type: fast
(Filter "postio")
Filter type: fast
(Filter "postior")
Filter type: fast
(Filter "postreverse")
Filter type: slow


示例 10–13 重定向有关打印过滤器的信息

以下示例说明如何将有关 daisytroff 过滤器的信息重定向到文件。如果无意中删除了过滤器定义,则此任务非常有用。


# lpfilter -f daisytroff -l > daisytroff.fd

管理表单(任务图)

任务 

说明 

参考 

创建新的表单定义。 

通过指定有关九种必需的打印机特征信息,来提供新的表单定义。 

如何创建新的打印机表单定义

限制用户对表单的访问。 

控制用户对网络上可用的打印机和表单的访问。 

如何限制用户对表单的访问

添加表单。 

将一个表单的定义添加到可用表单列表,以便 LP 打印服务可以识别该表单。 

如何添加表单

删除表单。 

从 LP 打印服务识别的可用表单列表中删除表单的定义。 

如何删除表单

挂载表单。 

使用 mount 命令通知 LP 打印服务接受具有特定定义的表单的打印请求。

如何卸载和挂载表单

设置要求挂载表单的警报。 

为已挂载到打印机的表单设置警报。 

如何设置要求挂载表单的警报

查看有关表单的信息。 

通过列出 /etc/lp/forms 目录的内容,查看表单名称和其他表单信息。

如何查看有关表单的信息

查看表单的当前状态。 

使用 lpforms 命令显示表单的当前状态。

如何查看表单的当前状态

限制打印机对表单的访问。 

控制打印机可以访问的表单。 

如何限制打印机对表单的访问

创建新的打印机表单

要提供新表单时,必须定义其特征,方法是将有关九个必需的打印机特征(如页长和页宽)的信息指定为 lpforms 命令的输入。

LP 打印服务使用此信息执行以下任务:

可以任意选择表单名称,只要其包含的字母数字字符或下划线不超过 14 个。该信息必须使用以下格式:


Page length: scaled-number
Page width: scaled-number
Number of pages: integer
Line pitch: scaled-number
Character pitch: scaled-number
Character set choice: character-set-name [,mandatory]
Ribbon color: ribbon-color
Comment:
informal notes about the form
Alignment pattern: [content-type] alignment pattern

可选字 [,mandatory] 表示用户不能覆盖表单中的字符集选择。可以通过对齐模式提供 content-type(尽管此信息是可选的)。如果提供此值,则打印服务将根据需要使用它来确定过滤和打印文件的方式。

除以下两个特例外,该信息可以按任何顺序出现:

并不是所有的信息都必须提供。如果不指定值,则赋予下表中的缺省值。在运行 lpforms 命令之前,请收集有关此表中所述的新表单的以下信息。

表 10–4 打印机表单的缺省值

值 

缺省值 

说明 

页长 

66 行 

表单的长度,或者多页表单中每页的长度。此信息可以是行数或者以英寸或厘米为单位的大小。 

页宽 

80 列 

表单的宽度,以字符、英寸或厘米为单位。 

页数 

多页表单中的页数。LP 打印服务将此数字与打印过滤器(如果可用)一起使用,将对齐模式限制为一个表单的长度。请参见下文中对对齐模式的说明。如果任何过滤器都不可用,则 LP 打印服务不截断输出。 

行间距 

每英寸 6 行 

对表单行间距的度量。行间距也称为行间空行。字符间距是指两行之间的距离(从基线到基线),由每英寸行数或每厘米行数度量。

字符间距 

每英寸 10 个字符 

对表单字符间距的度量。这是字符之间的距离,由英寸字符数或每厘米字符数度量。 

字符集选择 

任何 

在使用此表单时应使用的字符集、打印轮或字体盒。在使用此表单时,用户可以为自己的打印请求选择其他字符集。或者,可以要求只使用一个字符集。 

色带颜色 

任何 

如果始终使用某一色带打印表单,则 LP 打印服务可以提供装载警报消息,以指示要使用的颜色。 

注释  

(无缺省值) 

可能帮助用户了解表单的任何注释。例如,注释可能指示表单的名称、修订版、用途或使用限制。 

对齐模式

(无缺省值) 

LP 打印服务用来填充一个空白表单的样例文件。当挂载表单时,可以在表单上打印此模式以正确对齐。还可以定义此模式的内容类型,以便打印服务知道如何打印它。 


注 –

LP 打印服务不会尝试屏蔽对齐模式中的敏感信息。如果不希望在样例表单上打印敏感信息(例如在对齐支票时),则应屏蔽相应的数据。LP 打印服务将对齐模式保存在一个安全的位置,只有以超级用户或 lp 用户身份登录的用户才可以在该位置中阅读它。


收集有关表单的信息后,将它指定为 lpforms 命令的输入。应首先将此信息记录在单独的文件中,以便进行编辑,然后再使用 lpforms 命令将其指定。然后,可以将此文件用作输入,而不是在提示符之后单独键入每段信息。

Procedure如何创建新的打印机表单定义

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

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

  2. 创建表单定义文件。

    有关创建打印机表单的描述,请参见创建新的打印机表单。应将打印机定义保存在文本文件中。

  3. 将表单添加到 LP 打印服务。


    # lpadmin -p printer-name -M -f form-name
    
  4. 将表单添加到打印服务器。

    有关说明,请参见如何添加表单

管理表单

表单是按预先确定的格式打印信息的一张纸。与普通纸张材料不同,表单通常已预先打印了文本或图形。表单的常见示例包括公司笺头、发票、空白支票、收据和标签等。

术语表单具有以下两种含义: 物理介质(纸张)和向 LP 打印服务定义表单的软件。

LP 打印服务允许您控制表单的使用。本节提供有关添加、更改、删除、挂载表单以及限制对表单的访问的信息。

添加、更改或删除表单

添加表单时,会通知 LP 打印服务在其可用表单列表中包括该表单。还必须提供描述或定义表单所需的信息。虽然可以在添加表单时指定这类定义,但是它有助于首先创建定义再将其保存在文件中。然后可以通过编辑文件来更改表单定义。


注 –

不会随 LP 打印服务提供任何表单定义。


要更改表单,必须重新添加具有其他定义的表单。

对于可以定义的表单数目,LP 打印服务没有任何限制。但是,应该删除不再适用的表单。过时的表单可能导致打印服务进行不必要的处理。

Procedure如何添加表单

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

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

  2. 添加基于表单定义的表单。


    # lpforms -f form-name -F /etc/lp/forms/form
    
    -f

    指定为表单选择的名称

    -F /etc/lp/forms/ form

    指定表单定义的名称。

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

    表单将添加到打印服务器的 /etc/lp/forms/form-name/describe 文件中。

  3. 通过检查以下命令的输出,验证是否添加了表单:


    # lpforms -f form-name -l
    

示例 10–14 添加表单

以下示例说明如何添加使用 medical.fmd 表单定义的 medical 表单。


# lpforms -f medical -F /etc/lp/forms/medical.fmd

另请参见

必须提供一台或多台打印机对表单的访问权限,然后才能使用表单。有关更多信息,请参见如何限制打印机对表单的访问

Procedure如何删除表单

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

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

  2. 删除表单。


    # lpforms -f form-name -x
    
    -f

    它是要删除的表单。

    -x

    删除指定的表单。

    将从 /etc/lp/forms/form-name 文件中删除表单。

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

  3. 验证是否删除了表单。


    # lpforms -f form-name -l
    

    您应该收到一条错误消息,指示指定名称的表单不存在。


示例 10–15 删除表单

以下示例说明如何删除 medical 表单。


# lpforms -f medical -x

挂载表单

要打印表单,必须将纸张装入打印机,并使用命令挂载该表单。此命令通知 LP 打印服务提交到打印机的打印请求将要使用表单定义进行打印。

如果使用一台打印机进行不同类型的打印(包括表单),则应该执行以下操作:

挂载表单时,请确保已正确对齐该表单。如果为表单定义了对齐模式,则可以在挂载表单后要求按该模式重复打印。在调整打印机之前一直按该模式重复打印,以便对齐方式是正确的。

要在打印机上更改或停止使用表单时,必须通过卸载表单来通知 LP 打印服务。

Procedure如何卸载和挂载表单

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

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

  2. 停止接受正在卸载当前表单的计算机上的打印请求。


    # reject printer-name
    

    printer-name 是正在卸载表单的打印机的名称。

    不允许新的打印请求(它可能不需要表单)进入打印机队列。

  3. 卸载当前表单。


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

    此命令中的变量 printer-name步骤 2 中所用的变量相同。

    将当前表单从打印服务器的 /etc/lp/printers/printer-name /configuration 文件中删除。

  4. 从打印机中取出表单纸张。

  5. 为下一个打印请求装入新的表单纸张。

  6. 挂载表单。


    # lpadmin -p printer-name -M -f form-name[-a -o filebreak]
    -p

    指定要挂载表单的打印机。

    -M

    指定要挂载的表单的名称。

    -a -o filebreak

    (可选)使您可以打印为表单定义的对齐模式的副本(如果存在此定义)。

    -p printer-name

    要挂载表单的打印机。

    -M -f form-name

    要挂载的表单的名称。

    在打印服务器的 /etc/lp/printers/ printer-name/configuration 文件中添加指定的表单。

  7. 在打印机上开始接受打印请求。


    # accept printer-name
    

    打印机准备打印刚挂载的表单。

  8. 验证表单是否已挂载。


    # lpstat -p printer-name -l
    

    否则,请提交需要新表单的打印请求并检查打印机输出。


示例 10–16 卸载表单

以下示例说明卸载打印机 luna 上当前挂载的表单的过程。


# reject luna
destination "luna" will no longer accept requests
# lpadmin -p luna -M f none
# accept luna
destination "luna" now accepting requests


示例 10–17 挂载表单

以下示例说明在打印机 luna 上挂载 medical 表单的过程。


# reject luna
destination "luna" will no longer accept requests
# lpadmin -p luna -M f medical -a -o filebreak
# accept luna
destination "luna" now accepting requests

跟踪表单

LP 打印服务可帮助跟踪在每个打印机上挂载了哪些表单。打印服务还会在无法找到打印表单所需的说明时通知您。您负责创建表单说明,以及在每个打印机中挂载和卸载表单纸张。作为设置打印机的一部分或作为对来自 LP 打印服务的警报的响应,完成此任务。

用户可以指定他们希望打印作业的表单。作为超级用户,您可以挂载特定的表单,然后通知 LP 打印服务表单是可用的以及它所挂载的打印机。用户可以提交指定特定表单的打印请求。当 LP 打印服务收到请求时,它会向 root 发送警报消息,要求挂载表单。

定义要求挂载表单的警报

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

Procedure如何设置要求挂载表单的警报

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

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

  2. 设置要求挂载表单的请求警报。


    # lpforms -f form-name -A alert [-Q requests] [-W minutes]
    -f

    指定要为其设置请求警报的表单。

    -A alert

    指定在请求表单时将出现的警报类型。其中一些有效值包括 mailwritequiet。如果选择 mailwrite,则预定义的警报消息会指示挂载指定的表单。该信息包括已经设置为使用该表单的一台或多台打印机的名称。

    -Q requests

    指定必须有多少需要表单的打印请求排在队列中才能触发警报。如果不指定此选项,则在队列中仅有一个打印请求时就会出现警报。

    -W minutes

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

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

  3. 验证是否已为表单添加了警报。


    # lpforms -f form-name -A list
    

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


示例 10–18 设置要求挂载表单的警报

以下示例说明当 letterhead 的 10 个打印请求驻留在打印队列中时,如何将 letterhead 表单的电子邮件警报设置为每 5 分钟出现一次。


# lpforms -f letterhead -A mail -Q 10 -W 5


示例 10–19 设置控制台窗口警报

以下示例说明当 letterhead 的 5 个请求驻留在打印队列中时,如何将 letterhead 表单的控制台窗口警报设置为每 10 分钟出现一次。


# lpforms -f letterhead -A write -Q 5 -W 10


示例 10–20 取消设置请求警报

以下示例说明如何取消设置 invoice 表单的请求警报。


# lpforms -f invoice -A none

检查表单

为 LP 打印服务定义了表单后,可以使用以下两个命令之一检查表单。所选的命令取决于要检查的信息类型。

如果您无法确定现有表单的名称,则可以通过列出 /etc/lp/forms 目录的内容来查看表单名称。

Procedure如何查看有关表单的信息

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

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

  2. 请求有关表单的信息。


    # lpforms -f form-name -l
    
    -f

    指定要查看其信息的表单。为 form-name 指定 all 可查看有关所有可用表单的信息。

    -l

    列出指定的表单。

    显示有关指定的一个或多个表单的信息。


示例 10–21 查看有关表单的信息

以下示例说明如何显示有关 medical 表单的信息。


# lpforms -f medical -l
Page length: 62
Page width: 72
Number of pages: 2
Line pitch: 6
Character pitch: 12
Character set choice: pica
Ribbon color: black
Comment:
Medical claim form

以下示例说明如何将有关 medical 表单的信息重定向到文件。此命令可为表单创建表单定义。如果无意中删除了表单定义,则此命令非常有用。


# lpforms -f medical -l > medical.fmd

Procedure如何查看表单的当前状态

  1. 登录到打印服务器。

  2. 请求有关表单的当前状态的信息。


    $ lpstat -f form-name
    

    -f 选项指定要查看其当前状态的表单。为 form-name 指定 all 可查看所有表单的当前状态。

    显示有关指定的一个或多个表单的当前状态的信息。


示例 10–22 查看表单的当前状态

以下示例说明如何显示 medical 表单的状态。


$ lpstat -f medical
form medical is available to you

限制对表单的访问

您可以控制哪些打印机和哪些用户可以访问在网络上可用的部分或所有表单。例如,您可能希望仅有支付薪水和帐款的部门的人员才能打印支票表单。此外,您还可能希望支票表单仅在某些打印机上可用。

有关更多信息,请参见如何限制用户对表单的访问。要限制打印机对表单的访问,请参见如何限制打印机对表单的访问

Procedure如何限制用户对表单的访问

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

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

  2. 允许或拒绝用户对表单的访问。


    # lpforms -f form-name -u allow:user-list | deny:user-list
    
    -f

    指定要为其创建允许用户访问列表或拒绝用户访问列表的表单的名称。

    -u allow:user-list

    表示要添加到允许用户访问列表的用户。使用逗号或空格来分隔用户登录 ID。如果使用空格,请用引号将 ID 列表引起来。

    表 6–6 提供了 user-list 的有效值。

    -u deny:user-list

    表示要添加到拒绝用户访问列表的用户。使用逗号或空格来分隔用户登录 ID。如果使用空格,请用引号将 ID 列表引起来。表 6–6 提供了 user-list 的有效值。

    指定的用户将添加到打印机服务器上以下文件之一中的指定表单的相应用户访问列表:

    • /etc/lp/forms/form-name /allow

    • /etc/lp/forms/form-name /deny

  3. 验证是否正确设置了允许用户访问列表和拒绝用户访问列表。


    # lpforms -f form-name -l
    

示例 10–23 允许用户访问表单

以下示例说明如何仅允许用户 nathanmarcia 访问 check 表单。


# lpforms -f check -u allow:nathan,marcia


示例 10–24 拒绝用户访问表单

以下示例说明如何拒绝用户 jonessmith 访问 dental 表单。


# lpforms -f dental -u deny:jones,smith

Procedure如何限制打印机对表单的访问

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

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

  2. 允许或拒绝在打印机上使用表单。


    # lpadmin -p printer-name -f allow:form-list | deny:form-list
    
    -p

    指定要为其创建允许表单列表或拒绝表单列表的打印机的名称。

    -f allow: form-list

    指定要添加到允许列表的表单名称。使用空格或逗号来分隔多个表单名称。如果使用空格来分隔表单名称,请用引号将表单名称的列表引起来。

    -f deny: form-list

    它是要添加到拒绝列表的表单名称。使用空格或逗号来分隔多个表单名称。如果使用空格来分隔表单名称,请用引号将表单名称的列表引起来。

    将指定的一个或多个表单添加到打印服务器上以下文件之一中的允许表单列表或拒绝表单列表:

    • /etc/lp/printers/printer-name/form.allow

    • /etc/lp/printers/printer-name/form.deny

  3. 验证是否正确设置了允许表单列表和拒绝表单列表。


    # lpstat -p printer-name -l
    

示例 10–25 允许打印机访问表单

以下示例说明如何允许打印机 luna 仅访问 medicaldentalcheck 表单。


# lpadmin -p luna -f allow:medical,dental,check


示例 10–26 限制打印机访问表单

以下示例说明如何拒绝打印机 luna 访问 medicaldentalcheck 表单。


# lpadmin -p luna -f deny:"medical dental check"

管理字体(任务图)

任务 

说明 

参考 

安装下载的 PostScript 字体。 

如果打印机所服务的大多数打印请求都使用某字体,请永久下载该字体。要避免在网络中传输字体,请添加所有的打印机驻留字体。 

如何安装下载的 PostScript 字体

安装主机驻留 PostScript 字体。 

在许多用户共享的系统上安装主机驻留字体。当大量字体可用或者这些字体并不是由所有打印请求使用时,请使用此方法。 

如何安装主机驻留 PostScript 字体

管理字体

如果使用激光打印机,则可能需要安装和维护 PostScript 字体。对于许多打印机来说,字体都是在打印机安装过程中设置的。

PostScript 字体以轮廓形式存储在打印机上,或与打印机进行通信的系统上。在打印文档时,PostScript 解释程序会根据需要按照各字符的轮廓说明指定的相应大小生成每个字符。如果文档所需的字体未存储在所用的打印机上,则必须将该字体传输到该打印机,然后才能打印文档。此传输过程称为下载字体

字体的存储和访问有以下几种方式:

管理打印机驻留字体

大多数 PostScript 打印机都配有打印机 ROM 中驻留的字体。一些打印机装有可存储其他字体的磁盘。安装打印机时,应将打印机驻留字体的列表添加到该打印机的字体列表中。通过标识打印机驻留字体,可以避免在网络中不必要地传输字体。每台打印机都有各自的驻留字体列表,该列表包含在以下文件中:


/etc/lp/printers/printer-name/residentfonts

将打印机连接到打印服务器时,请确保 residentfonts 文件中的列表包含打印服务器上的字体。此文件还必须包含可下载到打印机的字体。

必须使用文本编辑器(如 vi)编辑包含打印机驻留字体列表的文件。

下载主机驻留字体

当 PostScript 文档包含对打印机上未装入字体的请求时,下载过滤器将处理此请求。下载过滤器使用 PostScript 文档结构化约定来确定要下载的字体。

LP 打印过滤器可以是快速过滤器或慢速过滤器。快速过滤器可快速准备文件以进行打印。此外,快速过滤器在进行处理时必须可以访问打印机。慢速过滤器转换文件所用的时间较长。但是,慢速过滤器在进行处理时无需访问打印机。将 ASCII 文档转换为 PostScript 文档的过滤器即是一个慢速过滤器的示例。

下载过滤器是快速过滤器。如果字体位于打印服务器上,则此过滤器会自动下载字体。下载过滤器还可以用于将字体发送到打印服务器。为此,可使用 lp -y 命令创建一个将下载过滤器作为慢速过滤器调用的新过滤器表项。或者,可以通过更改输入类型来强制选择此过滤器。

下载过滤器可执行以下五项任务:

  1. 过滤器搜索 PostScript 文档以确定请求的字体。这些请求是通过以下 PostScript 结构化注释记录的: %%DocumentFonts: font1 font2 …(在标题注释中)。

  2. 下载过滤器可搜索打印机驻留字体列表,以确定是否必须下载请求的字体。

  3. 如果字体不驻留在打印机上,则下载过滤器会搜索主机驻留字体目录表,以确定请求的字体是否可用。此过滤器通过从映射中获取相应的文件名来执行此搜索。

  4. 如果该字体可用,则下载文件提取该字体的文件并将其附加到要打印的文件。

  5. 下载过滤器会将字体定义文件和源文件发送到 PostScript 打印机。源文件是指要打印的文件。

安装和维护主机驻留字体

一些字体驻留在主机系统上,并在特定打印请求需要时传输到打印机。作为管理员,需要使 PostScript 字体可供系统上的所有用户使用。为此,必须知道如何安装以及在哪里安装这些字体。由于字体是按名称请求的,并存储在文件中,因此 LP 打印服务会保存一个映射文件。映射文件显示了字体的名称和包含这些字体的文件的名称之间的对应关系。在安装主机驻留字体时,必须同时更新映射文件和字体列表。

可用于 PostScript 打印机的字体存储在创建的目录中。这些目录名为 /usr/share/lib/hostfontdir/typeface/font。变量 typeface 可使用名称替换,如 palatinohelvetica。变量 font 可使用属性名替换,如 bolditalic

Procedure如何安装下载的 PostScript 字体

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

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

  2. 将目录转到 /etc/lp/printers/ printer-name 目录。


    # cd /etc/lp/printers/printer-name
    

    变量 printer-name 指定要安装下载的 PostScript 字体的打印机的名称。

  3. 如果 residentfonts 文件尚不存在,请创建该文件。


    # touch residentfonts
    

    如果是首次添加永久下载的字体,则此文件可能不存在。

  4. 编辑 residentfonts 文件。添加所有的打印机驻留字体以及要永久下载的字体。

Procedure如何安装主机驻留 PostScript 字体

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

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

  2. 创建 hostfontdir 目录。


    # cd /usr/share/lib
    
    1. 转到 /usr/share/lib 目录。


      # cd /usr/share/lib
      
    2. 如果 hostfontdir 目录尚不存在,请创建该目录。


      # mkdir hostfontdir
      
    3. hostfontdir 目录的权限更改为 775。


      # chmod 775 hostfontdir
      
  3. 如果该目录尚不存在,请为新字样创建一个目录。


    # mkdir typeface
    
  4. 将字体文件复制到相应的目录。


    # cp filename /usr/share/lib/hostfontdir/typeface/font
    
  5. 将字体的名称以及该字体所驻留的文件的名称添加到映射文件。

    1. 转到 /usr/share/lib/hostfontdir 目录。

    2. 使用文本编辑器(如 vi 编辑器)编辑 map 文件。

      对于要添加到文件中的每种字体,添加仅占一行的项。首先放置字体名称,后跟一个空格,再后跟字体所驻留的文件的名称。例如:


      Palatino-Bold /usr/share/lib/hostfontdir/palatino/bold
      
    3. 保存文件。

      当相应系统上的映射文件中存在示例项时,用户可以将该字体(例如 Palatino Bold)应用于其打印作业。当用户提交包含此字体的打印请求时,LP 打印服务会将 /usr/share/lib/hostfontdir/palatino/bold 文件的副本附加到该文件,然后将其发送到打印机。

  6. 如果使用的是 troff 程序,则必须在标准 troff 字体目录中为此字体创建新的宽度表。