本章提供有关管理具有特定打印机(这些打印机已使用 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 名称,例如 usascii、english、finnish 等。
通常,terminfo 字符集名称应该与制造商的打印机文档中使用的字符集名称近似匹配。由于并非所有的生产商都使用相同的字符集名称,因此 terminfo 字符集名称可以随打印机类型的不同而不同。
您不必向 LP 打印服务注册可选字符集名称。但是,可以为它们提供更有意义的名称或别名。
如果不指定可用于打印机的可选字符集,则 LP 打印服务将假定该打印机可接受任何字符集名称(如 cs0、cs1 或 cs2)或打印机可识别的 terminfo 名称。
使用 lpstat -p -l 命令时,不会列出 PostScript 打印机的字符集。PostScript 字体由 PostScript 过滤器而不是 terminfo 数据库中的项来控制。有关如何管理 PostScript 字体的信息,请参见管理字体。
用户可以使用 lpstat -p -l 命令显示您在打印服务器上为每个打印机定义的可选字符集的名称。
另一种获取替换字符集的方法是,使用打印机中以物理方式连接或挂载的可移除打印轮或字体盒。
要管理硬件挂载的字符集,请通知 LP 打印服务以下信息:
要用于可用打印轮的名称
打印机需要其他打印轮时希望的警告方式
然后,当用户使用 lp -S 命令请求特定字符集时,打印调度程序会发送要求挂载打印轮的警报。此外,还会将打印请求放置在打印队列中。挂载正确的打印轮并通知 LP 打印服务已挂载打印轮之后,将会打印作业。有关更多信息,请参见如何卸载和挂载打印轮或字体盒。
如果没有为打印机指定多个打印轮或字体盒,则 LP 打印服务会假定打印机具有单个固定的打印轮或字体盒。同样,用户在使用该打印机时不能指定特殊的打印轮或字体盒。
与可选字符集不同,用于打印轮或字体盒的名称不与 terminfo 数据库中的项关联。打印轮名称或字体盒名称仅用于与 LP 打印服务及其用户进行通信。
但是,为打印轮或字体盒选择的名称对于用户来说应该是有意义的。这些名称应该引用字体样式。此外,这些名称在具有类似打印轮、字体盒或可选字符集的打印机中应是相同的。这样,用户就可以指定字体样式(字符集),而不管将使用哪台打印机,或者是否将使用打印轮、字体盒或可选字符集。
对于打印轮名称或字体盒名称的含义,您和打印机用户应该意见一致。否则,用户要求的和您挂载的可能不是相同的字符集。
跟踪打印轮的过程与跟踪表单的过程类似。一些打印机(通常为信函质量打印机)具有提供特定字体或字符集的可移除打印头。可移除打印头包括打印轮和打印盒。用户可以请求指定的字符集。如果该字符集不可用,则 LP 打印服务将向 root 通知该请求。在更换打印轮之前,作业将一直存储在打印队列中。
请求用于挂载打印轮或字体盒的警报的方式,与从 LP 打印服务请求其他警报的方式相同。有关警报的常规信息,请参见使用 LP 打印命令设置打印机故障恢复。
以下过程说明如何定义可以用于打印机的打印轮或字体盒。
在打印服务器上,成为超级用户或同等角色。
角色包含授权和具有一定权限的命令。有关角色的更多信息,请参见《系统管理指南:安全性服务》中的“配置 RBAC(任务列表)”。
# print-server lpadmin -p printer-name -S hard-charset1[,hard-charset2...] |
指定要为其定义打印轮或字体盒的打印机的名称。
指定打印轮或字体盒的硬件字符集名称。
您可以使用此命令指定多个硬件字符集。使用逗号或空格来分隔字符集名称。如果使用空格,请用引号将字符集名称的列表引起来。
定义对用户来说有意义的名称。将这些名称通知用户。
打印轮或字体盒的定义在打印服务器的 /etc/lp/printers/printer-name /configuration 文件中指定。
在打印服务器的打印客户机上,以超级用户 lp 或同等角色的身份登录。
为打印客户机定义相同的打印轮或字体盒。
# print-client lpadmin -p printer-name -S hard-charset1, hard-charset2... |
此命令中的变量与步骤 2 中的变量相同。
打印轮或字体盒的定义将添加到打印客户机的 /etc/lp/printers/ printer-name/configuration 文件中。
验证是否已定义打印轮或字体盒。
您应该看到字符集的名称以及注释 (mounted)。
# lpstat -p printer-name -l |
以下示例说明如何在打印机 luna 上定义 pica 打印轮。打印客户机的名称是 asteroid。
asteroid# lpadmin -p luna -S pica |
在打印服务器上,成为超级用户或同等角色。
角色包含授权和具有一定权限的命令。有关角色的更多信息,请参见《系统管理指南:安全性服务》中的“配置 RBAC(任务列表)”。
卸载已在打印机中挂载的打印轮或字体盒。
# lpadmin -p printer-name -M -S none |
指定要卸载打印轮或字体盒的打印机。
指示要卸载当前的打印轮或字体盒。
有关更多信息,请参见 lpadmin(1M) 手册页。
将当前的打印轮或字体盒从打印服务器的 /etc/lp/printers/printer-name/configuration 文件中删除。
从打印机中移除打印轮或字体盒。
在打印机中放置新的打印轮或字体盒。
# lpadmin -p printer-name -M -S hard-charset... |
指定要挂载打印轮或字体盒的打印机。
指定要挂载的打印轮或字体盒的硬件字符集名称。
将打印轮或字体盒添加到打印服务器的 /etc/lp/printers/printer-name/configuration 文件中。挂载的打印轮或字体盒将一直处于活动状态,直到将其卸载或挂载了新的打印轮或字体盒。
在以下命令的输出中,检查 Print wheels 或 Character set 标题下的信息。
您应该看到打印轮或字符集的名称以及注释 (mounted)。
# lpstat -p printer-name -l |
以下示例说明如何卸载打印机 luna 上的当前打印轮并挂载 pica 打印轮。
# lpadmin -p luna -M -S none # lpadmin -p luna -M -S pica |
在打印服务器上,成为超级用户或同等角色。
角色包含授权和具有一定权限的命令。有关角色的更多信息,请参见《系统管理指南:安全性服务》中的“配置 RBAC(任务列表)”。
# lpadmin -S hard-charset -A alert [-Q requests] [-W minutes] |
指定要为其设置警报的打印轮或字体盒的硬件字符集名称。
指定在请求打印轮或字体盒时将出现的警报类型。有关 alert 的有效值的详细信息,请参见表 6–5。其中一些有效值包括 mail、write 和 quiet。
如果指定 mail 或 write,则预定义的警报消息会指示应挂载指定的打印轮或字体盒。该信息包括已设置为使用这类打印轮或字体盒的一台或多台打印机的名称。
指定在出现警报之前必须排在队列中的、需要打印轮或字体盒的打印请求的数目。如果不指定此选项,则队列中仅有一个打印请求时便会触发警报。
指定出现警报的间隔时间(以分钟为单位)。如果不指定此选项,则将发送一次警报。
有关更多信息,请参见 lpadmin(1M) 手册页。
警报将添加到打印服务器的 /etc/lp/pwheels/charset-name/alert.sh 文件中。
通过检查以下命令的输出,验证是否为打印轮或字体盒添加了警报。
# lpadmin -S hard-charset -A list |
或者,如果您设置的用于触发警报的打印请求数较小,请提交足够多的打印请求以满足最低要求。请确保收到了要求挂载打印轮或字体盒的警报。
以下示例说明在打印队列包含 elite 打印轮的 10 个打印请求时,如何将 elite 的电子邮件警报设置为每 5 分钟出现一次。
# lpadmin -S elite -A mail -Q 10 -W 5 |
以下示例说明在打印队列包含 finnish 字体盒的 5 个打印请求时,如何将 finnish 的电子邮件警报设置为每分钟出现一次。
# lpadmin -S finnish -A mail -Q 5 -W 1 |
以下示例说明如何取消设置 elite 打印轮的警报。
# lpadmin -S elite -A none |
如果可选字符集的 terminfo 名称是适当的,则无需执行此过程。有关使用 terminfo 数据库的更多信息,请参见为不支持的打印机添加 terminfo 项。
在打印服务器上,成为超级用户或同等角色。
角色包含授权和具有一定权限的命令。有关角色的更多信息,请参见《系统管理指南:安全性服务》中的“配置 RBAC(任务列表)”。
显示指定打印机类型的可选字符集的名称。
# tput -T printer-type csn |
指定在 terminfo 数据库中找到的打印机类型。有关 terminfo 数据库中项的信息,请参见打印机类型。
指定表示所指定打印机类型的可选字符集的编号(0、1、2、3、4、5 等)。系统会显示可选字符集的名称,后跟提示符号。例如,cs1 可能会使系统显示 english#。
有关更多信息,请参见 tput(1) 手册页。
设置可选字符集的别名。
# lpadmin -p printer-name -S select-charset1=alias1,select-charset2=alias2... |
指定要在其中设置可选字符集别名的打印机。
指定可选字符集的名称。该名称可以在步骤 2 中找到。
指定可选字符集的别名。除了可选字符集名称外,还可以使用此别名。
您可以使用此命令设置多个别名。使用逗号或空格来分隔各个别名。如果使用空格,请用引号将别名列表引起来。
别名将添加到打印服务器的 /etc/lp/printers/printer-name/configuration 文件中。
在作为打印服务器的打印客户机的系统上,以超级用户 lp 或同等角色的身份登录。
设置可选字符集的别名。
# lpadmin -p printer-name -S select-charset1=alias1,select-charset2=alias2... |
此命令中的变量与步骤 3 中的变量相同。
别名将添加到打印客户机的 /etc/lp/printers/printer-name/configuration 文件中。
在打印服务器和打印客户机上,验证在以下命令的输出中是否列出了可选字符集别名。
# lpstat -p printer-name -l |
或者,提交使用可选字符集别名的打印请求,然后检查输出。
以下示例说明如何显示打印机 luna 上 usascii 可选字符集的可选字符集名称。打印机 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 打印命令设置打印机故障警报。
无论打印过滤器简单或复杂,都必须满足以下要求:
过滤器应从其标准输入获取文件内容,并将转换后的文件发送到标准输出。
如果程序引用外部文件,则不能将它用作过滤器。可能很想将诸如 troff、nroff 之类的程序或类似的字处理程序用作过滤器。LP 打印服务无法从过滤器程序识别对其他文件的引用(称为包含文件)。由于 troff 和 nroff 程序允许包含文件,因此它们在用作过滤器时可能会失败。如果程序需要其他文件才能完成其处理,则不应将该程序用作过滤器。
过滤器不应依赖于用户通常无法访问的文件。如果过滤器在由用户直接运行时失败,则它在由 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 |
使用过滤器程序的全路径。如果存在程序始终需要的任何固定选项,则此处包括所有选项。
输入类型是打印过滤器可以处理的文件内容类型的列表。LP 打印服务确实限制输入类型的数目,但是大多数过滤器只能接受一种输入类型。有几种文件类型非常类似,因此过滤器可以处理它们。可以使用喜欢的任何名称,但名称最多只能包含 14 个字母数字字符和短划线。不要将下划线用作输入类型名称的一部分。
LP 打印服务使用这些名称将过滤器与文件类型进行匹配,因此请遵循一致的命名约定。例如,如果多个过滤器可以接受相同的输入类型,则在为每个过滤器指定该输入类型时,请使用相同名称。将这些名称通知用户,以便他们在提交文件进行打印时知道如何标识文件类型。
输出类型是过滤器可以作为输出生成的文件类型的列表。对于每种输入类型,过滤器将生成一种输出类型。但是,输出类型可能随作业的不同而不同。输出类型的名称不能超过 14 个字母数字字符和短划线。
输出类型的名称应与可用(本地或远程)打印机的类型匹配,或者与其他过滤器处理的输入类型匹配。如果 LP 打印服务发现转换文件需要用不同的过滤器过滤若干遍,则它会将这些过滤器组合在一个 shell 流水线中。您可能不需要此复杂级别,但 LP 打印服务具有此复杂处理功能。请尝试找出这样一组过滤器:它们将用户可能希望打印的所有不同文件作为输入类型,并将那些文件直接转换为打印机可以处理的文件类型。
打印机类型是打印过滤器可以将文件转换成的打印机类型的列表。对于大多数打印机和过滤器,可以将过滤器定义的此部分留空,因为此列表与输出类型的列表完全相同。但是,此列表可能是不同的。例如,为达到初始化目的,可能具有仅包含一种打印机类型的打印机。但是,该打印机可以识别几种不同的文件内容类型。在本质上,此打印机具有将各种文件类型转换为它可以处理的过滤器类型的内部过滤器。因此,过滤器可能生成与打印机可以处理的文件类型匹配的几种输出类型之一。应将打印过滤器标记为使用该打印机类型。
作为另一个示例,您可能具有列为接受相同文件类型的两种不同型号的打印机。但是,由于产品制造中的细微差异,一个打印机会偏离它所产生的结果。将打印机标记为不同的打印机类型,比如说 A 和 B,其中 B 是偏离的打印机。创建一个调整文件的过滤器,以说明 B 类型打印机产生的偏差。由于 B 打印机类型才需要此过滤器,因此将此过滤器列为仅在 B 类型打印机上起作用。
打印过滤器通常可以处理接受其输出的所有打印机,因此通常可以跳过过滤器定义的此部分。
但是,可能具有一些不适合于过滤器生成的输出的打印机。例如,可能希望将一台打印机专用于快速周转,仅将不需要过滤的文件发送到该打印机。对于需要先进行广泛过滤才能打印的文件,可以使用类型相同的其他打印机。
LP 打印服务可识别快速过滤器和慢速过滤器,如过滤器的类型中所述。
打印模式通过使用 lp -y 命令调用的慢速过滤器必须运行在从其发出打印请求的系统上。LP 打印服务无法将模式值传递到打印服务器。但是,它可以将文件内容类型(在 lp 命令的 -T 选项之后指定)与打印服务器上的内容类型进行匹配。因此,如果要在打印服务器上激活特殊模式,则必须指定允许 LP 打印服务将输入类型和输出类型进行匹配的内容类型。
选项指定如何将不同类型的信息转换为过滤器命令的命令行参数。此信息可以包括来自用户的规范(通过打印请求)、打印机定义和用于处理请求的任何过滤器实现的规范。
定义打印过滤器选项的信息源有 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 是关键字具有指定值时发生的情况。
作为如何为特定过滤器定义选项的示例,假定希望打印服务调度程序按照以下条件将打印请求指定给过滤器:
如果要由过滤器生成的 OUTPUT 类型为 impress,则将 -I 选项传递到过滤器。
如果要由过滤器生成的 OUTPUT 类型为 postscript,则将 -P 选项传递到过滤器。
要指定这些条件,请将以下模板作为 lpfilter 命令的选项提供:
Options: OUTPUT impress=-I, OUTPUT postscript=-P |
如果 Options 行变得太长,则将每个模板放置在单独的行上,如下所示:
Options: OUTPUT impress=-I Options: OUTPUT postscript=-P |
在这两个模板中,keyword 被定义为 OUTPUT。在第一个模板中,模式为 impress,replacement 的值为 --I。在第二个模板中,pattern 的值为 postscript,replacement 的值为 -P。
要确定为每种类型的模板(即,对于每个关键字的 pattern 和 replacement 参数)提供哪些值,请考虑以下事项:
INPUT 模板的值来自需要由过滤器转换的文件内容类型。
OUTPUT 模板的值来自必须由过滤器生成的输出类型。
TERM 模板的值是打印机类型。
PRINTER 模板的值是将打印最终输出的打印机的名称。
CPI、LPI、LENGTH 和 WIDTH 模板的值来自用户的打印请求、所用表单或打印机缺省值。
PAGES 模板的值是应打印的页的列表。通常,该值由用逗号分隔的页范围的列表组成。每个页范围由用短划线分隔的数字对或单个数字组成。(例如,1–5,6,8,10 指示第 1 页到第 5 页,以及第 6 页、第 8 页和第 10 页。)但是,在 -P 选项中为打印请求提供的任何值在传递后都保持不变。
CHARSET 模板的值是要使用的字符集的名称。
FORM 模板的值是由 lp -f 命令(用于提交打印请求的命令)请求的表单的名称。
COPIES 模板的值是要打印的文件的份数。如果过滤器使用此模板,则 LP 打印服务将它打印的已过滤文件份数减少到一份。此“单个副本”包括由过滤器生成的多个副本。
MODES 模板的值来自 lp -y 命令。由于用户可以指定几个 -y 选项,因此 MODES 模板可能具有几个值。这些值按用户指定的从左到右的顺序进行应用。
replacement 选项显示应如何将模板的值提供给过滤器程序。此部分通常为文字选项,有时包含占位符星号 (*) 以显示将值传递到的位置。pattern 和 replacement 选项还可以使用 ed 命令的正则表达式语法,进行从用户输入选项到过滤器选项的更复杂转换。支持 ed 的所有正则表达式语法,其中包括 \( ... \) 和 \n 结构。这些结构可用于提取 pattern 选项的部分,以复制到 replacement 选项,而 & 选项可用于将整个 pattern 选项复制到 replacement 选项。有关更多信息,请参见 ed(1) 手册页。
如果在 pattern 或 replacement 选项中包括了逗号或等号 (=),则在该字符前面添加反斜杠 (\)。在使用 pattern 或 replacement 选项时,将删除其中任何字符前面的反斜杠。
在打印服务器上,成为超级用户或同等角色。
角色包含授权和具有一定权限的命令。有关角色的更多信息,请参见《系统管理指南:安全性服务》中的“配置 RBAC(任务列表)”。
创建打印过滤器程序。
有关打印过滤器程序的信息,请参见编写打印过滤器程序。按照惯例,PostScript 打印机的过滤器程序位于 /usr/lib/lp/postscript 目录中。应将您创建的程序放置在所选目录中的 /usr/lib/lp 目录下。
创建打印过滤器定义。
有关打印过滤器定义的信息,请参见创建打印过滤器定义。应将打印过滤器定义保存在文本文件中。按照惯例,过滤器定义位于 /etc/lp/fd 目录中,并使用 .fd 后缀进行标识。
将打印过滤器添加到打印服务器。
有关说明,请参见如何添加打印过滤器。
此示例说明用于将 N37 或 Nlp 转换为 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 |
此示例说明用于从 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) 类型的任何打印机。用户在要求页面方向为纵向模式或横向模式时,只需要提供缩写 port 或 land。由于这些选项不是 LP 打印服务所固有的,因此用户必须通过使用 lp -y 命令指定它们。
在将新的打印过滤器添加到打印服务器后,将对打印请求进行如下处理:
如果用户键入以下命令提交 troff 文件类型,以便在类型为 PS 的 PostScript 打印机上打印(要求横向且页长为 60 行):
$ lp -T troff -o length=60 -y land -d luna ch1.doc |
使用以下参数运行打印过滤器程序 dpost 以转换文件:
/usr/lib/lp/postscript/dpost -l60 -pl |
如果用户输入以下命令:
$ lp -T troff -y group=4 -d luna ch1.doc |
使用以下参数运行打印过滤器程序 dpost 以转换文件:
/usr/lib/lp/postscript/dpost -n4 |
打印过滤器是将文件的内容类型转换为目标打印机可接受的内容类型的程序。
LP 打印服务使用过滤器完成以下任务:
将文件从一种数据格式转换为另一种格式,以便可以在特定类型的打印机上将其正确打印
处理特殊的打印模式,如双面打印、横向打印、草稿质量打印和信函质量打印
检测打印机故障并通知 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 软件不提供以下过滤器:
TEX
oscat (NeWSprint opost)
Enscript
为了替换 Enscript 而提供了 postreverse、postprint、postio 和 dpost 过滤器。
Solaris Print Manager 会将缺省的 PostScript 过滤器添加到打印服务器。如果这些过滤器不能满足您的打印需要,请参见如何创建新的打印过滤器。本节提供有关编写定制打印过滤器的信息。
在打印服务器上,成为超级用户或同等角色。
角色包含授权和具有一定权限的命令。有关角色的更多信息,请参见《系统管理指南:安全性服务》中的“配置 RBAC(任务列表)”。
添加基于打印过滤器定义的打印过滤器。
# lpfilter -f filter-name -F filter-definition |
指定为打印过滤器选择的名称。
指定打印过滤器定义的名称。
有关更多信息,请参见 lpfilter(1M) 手册页。
验证是否添加了打印过滤器。
# lpfilter -f filter-name -l |
以下示例说明如何添加具有 daisytroff.fd 打印过滤器定义的 daisytroff 打印过滤器。
# lpfilter -f daisytroff -F /etc/lp/fd/daisytroff.fd |
在打印服务器上,成为超级用户或同等角色。
角色包含授权和具有一定权限的命令。有关角色的更多信息,请参见《系统管理指南:安全性服务》中的“配置 RBAC(任务列表)”。
删除打印过滤器。
# lpfilter -f filter-name -x |
指定要删除的打印过滤器的名称。
删除指定的过滤器。
验证是否删除了过滤器。
# lpfilter -f filter-name -l |
您应该收到一条错误消息,指示指定名称的过滤器不存在。
以下示例说明如何删除 daisytroff 打印过滤器。
# lpfilter -f daisytroff -x |
在打印服务器上,成为超级用户或同等角色。
角色包含授权和具有一定权限的命令。有关角色的更多信息,请参见《系统管理指南:安全性服务》中的“配置 RBAC(任务列表)”。
请求有关打印过滤器的信息。
# lpfilter -f filter-name -l |
指定要查看其信息的打印过滤器。为 filter-name 指定 all 可查看有关所有可用打印过滤器的信息。
显示有关指定过滤器的信息。
显示有关指定的一个或多个打印过滤器的信息。
以下示例说明如何请求有关 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 |
以下示例说明如何显示已添加到系统的所有打印过滤器。样例命令输出如下所示。
# 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 |
以下示例说明如何将有关 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(尽管此信息是可选的)。如果提供此值,则打印服务将根据需要使用它来确定过滤和打印文件的方式。
除以下两个特例外,该信息可以按任何顺序出现:
Alignment pattern(它必须始终是最后一个)。
comment(它必须始终跟随带有 Comment: 提示符的行)。
如果注释包含以关键短语(如 Page length、Page width 等)开头的行,请在该行前面添加 > 字符,以便关键短语不位于该行的开头。系统将从注释中去除开头的 > 字符,而且不显示该字符。
并不是所有的信息都必须提供。如果不指定值,则赋予下表中的缺省值。在运行 lpforms 命令之前,请收集有关此表中所述的新表单的以下信息。
表 10–4 打印机表单的缺省值
值 |
缺省值 |
说明 |
---|---|---|
页长 |
66 行 |
表单的长度,或者多页表单中每页的长度。此信息可以是行数或者以英寸或厘米为单位的大小。 |
页宽 |
80 列 |
表单的宽度,以字符、英寸或厘米为单位。 |
页数 |
1 |
多页表单中的页数。LP 打印服务将此数字与打印过滤器(如果可用)一起使用,将对齐模式限制为一个表单的长度。请参见下文中对对齐模式的说明。如果任何过滤器都不可用,则 LP 打印服务不截断输出。 |
行间距 |
每英寸 6 行 |
对表单行间距的度量。行间距也称为行间空行。字符间距是指两行之间的距离(从基线到基线),由每英寸行数或每厘米行数度量。 |
字符间距 |
每英寸 10 个字符 |
对表单字符间距的度量。这是字符之间的距离,由英寸字符数或每厘米字符数度量。 |
字符集选择 |
任何 |
在使用此表单时应使用的字符集、打印轮或字体盒。在使用此表单时,用户可以为自己的打印请求选择其他字符集。或者,可以要求只使用一个字符集。 |
色带颜色 |
任何 |
如果始终使用某一色带打印表单,则 LP 打印服务可以提供装载警报消息,以指示要使用的颜色。 |
注释 |
(无缺省值) |
可能帮助用户了解表单的任何注释。例如,注释可能指示表单的名称、修订版、用途或使用限制。 |
(无缺省值) |
LP 打印服务用来填充一个空白表单的样例文件。当挂载表单时,可以在表单上打印此模式以正确对齐。还可以定义此模式的内容类型,以便打印服务知道如何打印它。 |
LP 打印服务不会尝试屏蔽对齐模式中的敏感信息。如果不希望在样例表单上打印敏感信息(例如在对齐支票时),则应屏蔽相应的数据。LP 打印服务将对齐模式保存在一个安全的位置,只有以超级用户或 lp 用户身份登录的用户才可以在该位置中阅读它。
收集有关表单的信息后,将它指定为 lpforms 命令的输入。应首先将此信息记录在单独的文件中,以便进行编辑,然后再使用 lpforms 命令将其指定。然后,可以将此文件用作输入,而不是在提示符之后单独键入每段信息。
在打印服务器上,成为超级用户或同等角色。
角色包含授权和具有一定权限的命令。有关角色的更多信息,请参见《系统管理指南:安全性服务》中的“配置 RBAC(任务列表)”。
创建表单定义文件。
有关创建打印机表单的描述,请参见创建新的打印机表单。应将打印机定义保存在文本文件中。
将表单添加到 LP 打印服务。
# lpadmin -p printer-name -M -f form-name |
将表单添加到打印服务器。
有关说明,请参见如何添加表单。
表单是按预先确定的格式打印信息的一张纸。与普通纸张材料不同,表单通常已预先打印了文本或图形。表单的常见示例包括公司笺头、发票、空白支票、收据和标签等。
术语表单具有以下两种含义: 物理介质(纸张)和向 LP 打印服务定义表单的软件。
LP 打印服务允许您控制表单的使用。本节提供有关添加、更改、删除、挂载表单以及限制对表单的访问的信息。
添加表单时,会通知 LP 打印服务在其可用表单列表中包括该表单。还必须提供描述或定义表单所需的信息。虽然可以在添加表单时指定这类定义,但是它有助于首先创建定义再将其保存在文件中。然后可以通过编辑文件来更改表单定义。
不会随 LP 打印服务提供任何表单定义。
要更改表单,必须重新添加具有其他定义的表单。
对于可以定义的表单数目,LP 打印服务没有任何限制。但是,应该删除不再适用的表单。过时的表单可能导致打印服务进行不必要的处理。
在打印服务器上,成为超级用户或同等角色。
角色包含授权和具有一定权限的命令。有关角色的更多信息,请参见《系统管理指南:安全性服务》中的“配置 RBAC(任务列表)”。
添加基于表单定义的表单。
# lpforms -f form-name -F /etc/lp/forms/form |
指定为表单选择的名称
指定表单定义的名称。
有关更多信息,请参见 lpforms(1M) 手册页。
通过检查以下命令的输出,验证是否添加了表单:
# lpforms -f form-name -l |
以下示例说明如何添加使用 medical.fmd 表单定义的 medical 表单。
# lpforms -f medical -F /etc/lp/forms/medical.fmd |
必须提供一台或多台打印机对表单的访问权限,然后才能使用表单。有关更多信息,请参见如何限制打印机对表单的访问。
在打印服务器上,成为超级用户或同等角色。
角色包含授权和具有一定权限的命令。有关角色的更多信息,请参见《系统管理指南:安全性服务》中的“配置 RBAC(任务列表)”。
删除表单。
# lpforms -f form-name -x |
它是要删除的表单。
删除指定的表单。
将从 /etc/lp/forms/form-name 文件中删除表单。
有关更多信息,请参见 lpforms(1M) 手册页。
验证是否删除了表单。
# lpforms -f form-name -l |
您应该收到一条错误消息,指示指定名称的表单不存在。
以下示例说明如何删除 medical 表单。
# lpforms -f medical -x |
要打印表单,必须将纸张装入打印机,并使用命令挂载该表单。此命令通知 LP 打印服务提交到打印机的打印请求将要使用表单定义进行打印。
如果使用一台打印机进行不同类型的打印(包括表单),则应该执行以下操作:
在装入纸张和挂载表单之前禁用打印机。
在表单就绪后重新启用打印机。否则,LP 打印服务将继续在打印机上打印不需要该表单的文件。
挂载表单时,请确保已正确对齐该表单。如果为表单定义了对齐模式,则可以在挂载表单后要求按该模式重复打印。在调整打印机之前一直按该模式重复打印,以便对齐方式是正确的。
要在打印机上更改或停止使用表单时,必须通过卸载表单来通知 LP 打印服务。
在打印服务器上,成为超级用户或同等角色。
角色包含授权和具有一定权限的命令。有关角色的更多信息,请参见《系统管理指南:安全性服务》中的“配置 RBAC(任务列表)”。
停止接受正在卸载当前表单的计算机上的打印请求。
# reject printer-name |
printer-name 是正在卸载表单的打印机的名称。
不允许新的打印请求(它可能不需要表单)进入打印机队列。
# lpadmin -p printer-name -M -f none |
此命令中的变量 printer-name 与步骤 2 中所用的变量相同。
将当前表单从打印服务器的 /etc/lp/printers/printer-name /configuration 文件中删除。
为下一个打印请求装入新的表单纸张。
挂载表单。
# lpadmin -p printer-name -M -f form-name[-a -o filebreak] |
指定要挂载表单的打印机。
指定要挂载的表单的名称。
(可选)使您可以打印为表单定义的对齐模式的副本(如果存在此定义)。
要挂载表单的打印机。
要挂载的表单的名称。
在打印服务器的 /etc/lp/printers/ printer-name/configuration 文件中添加指定的表单。
在打印机上开始接受打印请求。
# accept printer-name |
打印机准备打印刚挂载的表单。
验证表单是否已挂载。
# lpstat -p printer-name -l |
否则,请提交需要新表单的打印请求并检查打印机输出。
以下示例说明卸载打印机 luna 上当前挂载的表单的过程。
# reject luna destination "luna" will no longer accept requests # lpadmin -p luna -M f none # accept luna destination "luna" now accepting requests |
以下示例说明在打印机 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 打印命令设置打印机故障恢复。
在打印服务器上,成为超级用户或同等角色。
角色包含授权和具有一定权限的命令。有关角色的更多信息,请参见《系统管理指南:安全性服务》中的“配置 RBAC(任务列表)”。
# lpforms -f form-name -A alert [-Q requests] [-W minutes] |
指定要为其设置请求警报的表单。
指定在请求表单时将出现的警报类型。其中一些有效值包括 mail、write 和 quiet。如果选择 mail 或 write,则预定义的警报消息会指示挂载指定的表单。该信息包括已经设置为使用该表单的一台或多台打印机的名称。
指定必须有多少需要表单的打印请求排在队列中才能触发警报。如果不指定此选项,则在队列中仅有一个打印请求时就会出现警报。
指定将出现警报的间隔时间(以分钟为单位)。如果不指定此选项,则发送警报一次。
请求警报将添加到打印服务器的 /etc/lp/forms/form-name/alert.sh 文件中。
验证是否已为表单添加了警报。
# lpforms -f form-name -A list |
或者,如果您设置的用于触发警报的打印请求数较小,请提交打印请求以满足最低要求。请确保收到了要求挂载表单的警报。
以下示例说明当 letterhead 的 10 个打印请求驻留在打印队列中时,如何将 letterhead 表单的电子邮件警报设置为每 5 分钟出现一次。
# lpforms -f letterhead -A mail -Q 10 -W 5 |
以下示例说明当 letterhead 的 5 个请求驻留在打印队列中时,如何将 letterhead 表单的控制台窗口警报设置为每 10 分钟出现一次。
# lpforms -f letterhead -A write -Q 5 -W 10 |
以下示例说明如何取消设置 invoice 表单的请求警报。
# lpforms -f invoice -A none |
为 LP 打印服务定义了表单后,可以使用以下两个命令之一检查表单。所选的命令取决于要检查的信息类型。
如果您无法确定现有表单的名称,则可以通过列出 /etc/lp/forms 目录的内容来查看表单名称。
在打印服务器上,成为超级用户或同等角色。
角色包含授权和具有一定权限的命令。有关角色的更多信息,请参见《系统管理指南:安全性服务》中的“配置 RBAC(任务列表)”。
请求有关表单的信息。
# lpforms -f form-name -l |
指定要查看其信息的表单。为 form-name 指定 all 可查看有关所有可用表单的信息。
列出指定的表单。
显示有关指定的一个或多个表单的信息。
以下示例说明如何显示有关 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 |
登录到打印服务器。
请求有关表单的当前状态的信息。
$ lpstat -f form-name |
-f 选项指定要查看其当前状态的表单。为 form-name 指定 all 可查看所有表单的当前状态。
显示有关指定的一个或多个表单的当前状态的信息。
以下示例说明如何显示 medical 表单的状态。
$ lpstat -f medical form medical is available to you |
您可以控制哪些打印机和哪些用户可以访问在网络上可用的部分或所有表单。例如,您可能希望仅有支付薪水和帐款的部门的人员才能打印支票表单。此外,您还可能希望支票表单仅在某些打印机上可用。
有关更多信息,请参见如何限制用户对表单的访问。要限制打印机对表单的访问,请参见如何限制打印机对表单的访问。
在打印服务器上,成为超级用户或同等角色。
角色包含授权和具有一定权限的命令。有关角色的更多信息,请参见《系统管理指南:安全性服务》中的“配置 RBAC(任务列表)”。
允许或拒绝用户对表单的访问。
# lpforms -f form-name -u allow:user-list | deny:user-list |
指定要为其创建允许用户访问列表或拒绝用户访问列表的表单的名称。
表示要添加到允许用户访问列表的用户。使用逗号或空格来分隔用户登录 ID。如果使用空格,请用引号将 ID 列表引起来。
表 6–6 提供了 user-list 的有效值。
表示要添加到拒绝用户访问列表的用户。使用逗号或空格来分隔用户登录 ID。如果使用空格,请用引号将 ID 列表引起来。表 6–6 提供了 user-list 的有效值。
指定的用户将添加到打印机服务器上以下文件之一中的指定表单的相应用户访问列表:
/etc/lp/forms/form-name /allow
/etc/lp/forms/form-name /deny
验证是否正确设置了允许用户访问列表和拒绝用户访问列表。
# lpforms -f form-name -l |
以下示例说明如何仅允许用户 nathan 和 marcia 访问 check 表单。
# lpforms -f check -u allow:nathan,marcia |
以下示例说明如何拒绝用户 jones 和 smith 访问 dental 表单。
# lpforms -f dental -u deny:jones,smith |
在打印服务器上,成为超级用户或同等角色。
角色包含授权和具有一定权限的命令。有关角色的更多信息,请参见《系统管理指南:安全性服务》中的“配置 RBAC(任务列表)”。
# lpadmin -p printer-name -f allow:form-list | deny:form-list |
指定要为其创建允许表单列表或拒绝表单列表的打印机的名称。
指定要添加到允许列表的表单名称。使用空格或逗号来分隔多个表单名称。如果使用空格来分隔表单名称,请用引号将表单名称的列表引起来。
它是要添加到拒绝列表的表单名称。使用空格或逗号来分隔多个表单名称。如果使用空格来分隔表单名称,请用引号将表单名称的列表引起来。
将指定的一个或多个表单添加到打印服务器上以下文件之一中的允许表单列表或拒绝表单列表:
/etc/lp/printers/printer-name/form.allow
/etc/lp/printers/printer-name/form.deny
验证是否正确设置了允许表单列表和拒绝表单列表。
# lpstat -p printer-name -l |
以下示例说明如何允许打印机 luna 仅访问 medical、dental 和 check 表单。
# lpadmin -p luna -f allow:medical,dental,check |
以下示例说明如何拒绝打印机 luna 访问 medical、dental 和 check 表单。
# lpadmin -p luna -f deny:"medical dental check" |
任务 |
说明 |
参考 |
---|---|---|
安装下载的 PostScript 字体。 |
如果打印机所服务的大多数打印请求都使用某字体,请永久下载该字体。要避免在网络中传输字体,请添加所有的打印机驻留字体。 | |
安装主机驻留 PostScript 字体。 |
在许多用户共享的系统上安装主机驻留字体。当大量字体可用或者这些字体并不是由所有打印请求使用时,请使用此方法。 |
如果使用激光打印机,则可能需要安装和维护 PostScript 字体。对于许多打印机来说,字体都是在打印机安装过程中设置的。
PostScript 字体以轮廓形式存储在打印机上,或与打印机进行通信的系统上。在打印文档时,PostScript 解释程序会根据需要按照各字符的轮廓说明指定的相应大小生成每个字符。如果文档所需的字体未存储在所用的打印机上,则必须将该字体传输到该打印机,然后才能打印文档。此传输过程称为下载字体。
字体的存储和访问有以下几种方式:
打印机驻留字体永久存储在打印机上。这些字体由制造商安装在打印机的只读存储器 (read-only memory, ROM) 中。如果打印机装有磁盘,则可以将字体安装在该磁盘上。大多数 PostScript 打印机都附带有 35 种标准字体。
永久下载的字体是通过 PostScript exitserver 程序传输到打印机的。在关闭打印机之前,永久下载的字体将一直保存在打印机内存中。分配给所下载字体的内存会减少服务器上可用于 PostScript 打印请求的内存。使用 exitserver 程序需要有打印机系统口令,并且可以为打印机管理员保留该口令。如果打印机所服务的大多数打印请求都使用某字体,则应该永久下载该字体。
可以将很少使用的或者具有特殊用途的字体存储在用户的系统上。用户可以在提交打印请求时指定这些字体。字体将附加到打印请求并传输到打印机。处理打印请求时,将释放为字体分配的空间以用于其他打印请求。
主机驻留字体存储在由许多用户共享的系统上。存储这些字体的系统可以是打印服务器或打印客户机。每个用户都可以请求要打印的文档中的字体。当大量字体可用或者这些字体并不是由所有打印请求使用时,此方法非常有用。如果字体仅在连接到打印服务器的打印机上使用,则应该将这些字体存储在打印服务器上。如果字体将由一个系统上的用户使用,并且这些用户可以将请求提交到网络上的多台打印机,则应该将这些字体存储在用户的系统上。
LP 打印服务提供了一个特殊的下载过滤器来管理主机驻留字体。LP 打印服务还为驻留在许多 PostScript 打印机上的 35 种标准 PostScript 字体提供了 troff 宽度表。有关 troff 程序的更多信息,请参见 troff(1) 手册页。
大多数 PostScript 打印机都配有打印机 ROM 中驻留的字体。一些打印机装有可存储其他字体的磁盘。安装打印机时,应将打印机驻留字体的列表添加到该打印机的字体列表中。通过标识打印机驻留字体,可以避免在网络中不必要地传输字体。每台打印机都有各自的驻留字体列表,该列表包含在以下文件中:
/etc/lp/printers/printer-name/residentfonts |
将打印机连接到打印服务器时,请确保 residentfonts 文件中的列表包含打印服务器上的字体。此文件还必须包含可下载到打印机的字体。
必须使用文本编辑器(如 vi)编辑包含打印机驻留字体列表的文件。
当 PostScript 文档包含对打印机上未装入字体的请求时,下载过滤器将处理此请求。下载过滤器使用 PostScript 文档结构化约定来确定要下载的字体。
LP 打印过滤器可以是快速过滤器或慢速过滤器。快速过滤器可快速准备文件以进行打印。此外,快速过滤器在进行处理时必须可以访问打印机。慢速过滤器转换文件所用的时间较长。但是,慢速过滤器在进行处理时无需访问打印机。将 ASCII 文档转换为 PostScript 文档的过滤器即是一个慢速过滤器的示例。
下载过滤器是快速过滤器。如果字体位于打印服务器上,则此过滤器会自动下载字体。下载过滤器还可以用于将字体发送到打印服务器。为此,可使用 lp -y 命令创建一个将下载过滤器作为慢速过滤器调用的新过滤器表项。或者,可以通过更改输入类型来强制选择此过滤器。
下载过滤器可执行以下五项任务:
过滤器搜索 PostScript 文档以确定请求的字体。这些请求是通过以下 PostScript 结构化注释记录的: %%DocumentFonts: font1 font2 …(在标题注释中)。
下载过滤器可搜索打印机驻留字体列表,以确定是否必须下载请求的字体。
如果字体不驻留在打印机上,则下载过滤器会搜索主机驻留字体目录表,以确定请求的字体是否可用。此过滤器通过从映射中获取相应的文件名来执行此搜索。
如果该字体可用,则下载文件提取该字体的文件并将其附加到要打印的文件。
下载过滤器会将字体定义文件和源文件发送到 PostScript 打印机。源文件是指要打印的文件。
一些字体驻留在主机系统上,并在特定打印请求需要时传输到打印机。作为管理员,需要使 PostScript 字体可供系统上的所有用户使用。为此,必须知道如何安装以及在哪里安装这些字体。由于字体是按名称请求的,并存储在文件中,因此 LP 打印服务会保存一个映射文件。映射文件显示了字体的名称和包含这些字体的文件的名称之间的对应关系。在安装主机驻留字体时,必须同时更新映射文件和字体列表。
可用于 PostScript 打印机的字体存储在创建的目录中。这些目录名为 /usr/share/lib/hostfontdir/typeface/font。变量 typeface 可使用名称替换,如 palatino 或 helvetica。变量 font 可使用属性名替换,如 bold 或 italic。
在打印服务器上,成为超级用户或同等角色。
角色包含授权和具有一定权限的命令。有关角色的更多信息,请参见《系统管理指南:安全性服务》中的“配置 RBAC(任务列表)”。
将目录转到 /etc/lp/printers/ printer-name 目录。
# cd /etc/lp/printers/printer-name |
变量 printer-name 指定要安装下载的 PostScript 字体的打印机的名称。
如果 residentfonts 文件尚不存在,请创建该文件。
# touch residentfonts |
如果是首次添加永久下载的字体,则此文件可能不存在。
编辑 residentfonts 文件。添加所有的打印机驻留字体以及要永久下载的字体。
在打印服务器或打印客户机上,成为超级用户或同等角色。
角色包含授权和具有一定权限的命令。有关角色的更多信息,请参见《系统管理指南:安全性服务》中的“配置 RBAC(任务列表)”。
创建 hostfontdir 目录。
# cd /usr/share/lib |
如果该目录尚不存在,请为新字样创建一个目录。
# mkdir typeface |
将字体文件复制到相应的目录。
# cp filename /usr/share/lib/hostfontdir/typeface/font |
将字体的名称以及该字体所驻留的文件的名称添加到映射文件。
转到 /usr/share/lib/hostfontdir 目录。
使用文本编辑器(如 vi 编辑器)编辑 map 文件。
对于要添加到文件中的每种字体,添加仅占一行的项。首先放置字体名称,后跟一个空格,再后跟字体所驻留的文件的名称。例如:
Palatino-Bold /usr/share/lib/hostfontdir/palatino/bold |
保存文件。
当相应系统上的映射文件中存在示例项时,用户可以将该字体(例如 Palatino Bold)应用于其打印作业。当用户提交包含此字体的打印请求时,LP 打印服务会将 /usr/share/lib/hostfontdir/palatino/bold 文件的副本附加到该文件,然后将其发送到打印机。
如果使用的是 troff 程序,则必须在标准 troff 字体目录中为此字体创建新的宽度表。