以超级用户 lp 或同等角色的身份登录。
确保打印机类型正确。
不正确的打印机类型可能会导致不正确的输出。例如,如果指定打印机类型为 PS 并且页面以相反顺序打印,请尝试类型为 PSR 的打印机。(这些类型名称必须大写。)而且,错误的打印机类型还可能导致文本丢失、文本模糊不清或者文本字体错误。要确定打印机类型,请检查 terminfo 数据库中的项。有关 terminfo 数据库结构的信息,请参见打印机类型。
在打印机服务器上,显示打印机的特性。
$ lpstat -p luna -l printer luna is idle. enabled since Thu Jul 12 15:02:32 ... Form mounted: Content types: postscript Printer types: PS Description: Connection: direct Interface: /usr/lib/lp/model/standard After fault: continue Users allowed: (all) Forms allowed: (none) Banner not required Character sets: Default pitch: Default page size: 80 wide 66 long Default port settings: $ |
查阅打印机制造商的文档,确定打印机型号。
如果打印机类型不正确,请使用 Solaris Print Manager 的“修改打印机属性”窗口或使用以下 lpadmin 命令进行更改。
# lpstat -p printer-name -T printer-type |
在打印客户机上,打印机类型应为 unknown。在打印服务器上,打印机类型必须与定义的 terminfo 项相匹配,以支持您的打印机型号。如果没有用于您的打印机类型的 terminfo 项,请参见如何为不支持的打印机添加 terminfo 项。
为打印机指定的文件内容类型指示了打印机可以直接打印而不必进行过滤的文件的类型。错误的文件内容类型会导致在需要过滤时跳过过滤。
记下在以前的步骤中 lpstat 命令提供的有关文件内容类型的信息。
在打印客户机中,除非有理由指定一个或多个明确的内容类型,否则文件内容类型应为 any。如果在客户机中指定内容,则在打印客户机中而不是打印服务器上进行过滤。此外,客户机中的内容类型必须与打印服务器中指定的内容类型相匹配,依此类推,打印服务器还必须反映打印机的功能。
查阅打印机制造商的文档,确定打印机可以直接打印的文件类型。
用于表示这些文件类型的名称不必与制造商使用的名称相匹配。但是,使用的名称必须与 LP 打印服务可识别的过滤器使用的名称一致。
如果文件内容类型不正确,请使用 Solaris Print Manager 的“修改打印机属性”窗口或以下 lpadmin 命令进行更改。
# lpadmin -p printer-name -I file-content-type(s) |
根据需要,可以在打印客户机或打印服务器上分别运行此命令,也可以同时在两者上运行此命令。在打印客户机中尝试 -I any,而在打印服务器上尝试 -I ""。后者指定一个空的文件内容类型列表,这意味着将尝试过滤所有文件,因为打印机只能直接打印精确匹配其打印机类型的文件。
不能打印文件时,应优先考虑此组合。如果可行,您可能需要尝试在打印服务器上指定明确的内容类型,以减少不必要的过滤。对于本地 PostScript 打印机,如果打印机支持这些类型,则应使用 postscript 或 postscript,simple。请注意,PS 和 PSR 不是文件内容类型,它们是打印机类型。
如果省略 -I,则文件内容列表缺省为 simple。如果使用 -I 选项并且要指定 simple 以外的文件内容类型,则列表中必须包括 simple。
指定多个文件内容类型时,请用逗号分隔名称。也可以用空格分隔名称,并用引号将列表引起来。如果指定 any 作为文件内容类型,则不进行任何过滤,并应仅发送打印机可以直接打印的文件类型至打印机。
检查打印请求未跳过下载字体所需的过滤。
如果用户使用 lp -T PS 命令将打印请求提交到 PostScript 打印机,则不会执行过滤。请尝试用 lp -T postscript 命令提交请求以强制进行过滤,这样可以下载文档所需的非驻留字体。
确保打印机端口的 stty 设置正确。
阅读打印机文档,确定打印机端口的正确 stty 设置。
如果打印机连接至并行或 USB 端口,则与波特设置无关。
使用 stty 命令检查当前设置。
# stty -a < /dev/term/a speed 9600 baud; rows = 0; columns = 0; ypixels = 0; xpixels = 0; eucw 1:0:0:0, scrw 1:0:0:0 intr = ^c; quit = ^|; erase = ^?; kill = ^u; eof = ^d; eol = <undef>; eol2 = <undef>; swtch = <undef>; start = ^q; stop = ^s; susp = ^z; dsusp = ^y; rprnt = ^r; flush = ^o; werase = ^w; lnext = ^v; parenb -parodd cs7 -cstopb -hupcl cread -clocal -loblk -parext -ignbrk brkint -ignpar -parmrk -inpck istrip -inlcr -igncr icrnl -iuclc ixon -ixany -ixoff imaxbel isig icanon -xcase echo echoe echok -echonl -noflsh -tostop echoctl -echoprt echoke -defecho -flusho -pendin iexten opost -olcuc onlcr -ocrnl -onocr -onlret -ofill -ofdel tab3 # |
此命令可以显示打印机端口的 stty 当前设置。
下表说明了 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 |
换页后无延迟 |
更改 stty 设置。
# lpadmin -p printer-name -o "stty= options" |
stty 值 |
结果 |
因设置不正确可能产生的问题 |
---|---|---|
110、300、600、1200、1800、2400、4800、9600、19200、38400 |
将波特率设置为指定值(仅输入一个波特率) |
可能打印随机字符和特殊字符,并且间距可能不一致 |
oddp evenp -parity |
设置奇数奇偶校验 设置偶数奇偶校验 不设置奇偶校验 |
字符缺失或字符错误随机出现 |
-tabs |
不设置制表符 |
文本挤至右边界 |
tabs |
以八个空格为间隔设置制表符 |
文本没有左边界,聚在一起或者重叠在一起 |
-onlcr |
在行首不设置回车 |
错误的双倍间距 |
onlcr |
在行首设置回车 |
沿页面向下以 Z 字形打印 |
通过将选项列表用单引号引起并用空格分隔每个选项,可以更改多个选项设置。例如,假设打印机要求您启用奇数奇偶校验并设置 7 位的字符大小。您可键入与以下示例所示类似的命令:
# lpadmin -p neptune -o "stty='parenb parodd cs7'" |
stty 选项 parenb 启用奇偶校验检查/生成,parodd 设置奇数奇偶校验生成,cs7 将字符大小设置为 7 位。
验证文档是否正确打印。
# lp -d printer-name filename |