FreeBSD handbook中文版 11 打印 (1)基本设置(6)
2008-02-23 08:01:56来源:互联网 阅读 ()
打出了“阶梯效应”。
你的结果可能是这个样子:
!”#$%&’()* ,-./01234
“#$%&’()* ,-./012345
#$%&’()* ,-./0123456
这时你已经成为因为换行字符冲突而产生的阶梯效应受害者。UNIX 风格的操作系统只
使用ASCII 码10,line feed (LF) 作为换行字符。MS-DOS、OS/2 以及其它的操作系统使用
两个字符ASCII 码10 以及ASCII 码13 (称做carriage return 或CR)。很多打印机使用MS-DOS
的表示法来代表换行字符。
当你用FreeBSD 打印时,你的文件只用line feed 字符换行。当打印机看到一个line feed
字符时,将纸卷了一行,仍然从同一个位置继续往后打印。这就是为什么要用carriage
return 字符的原因:将下一个字的打印位置移到纸张的最左边。
FreeBSD 希望你的打印机可以:
打印机收到CR 打印机打印CR
打印机收到LF 打印机打印CR LF
有一些方法可以达到这个目地:
1. 用打印机上的开关或控制面板设置这些字符的处理方式。请查阅你的打印机手册并做正
确的设置。
注意: 如果你的计算机安装了除了FreeBSD 外的操作系统,你也许得常常重新
设置打印机处理CR 和LF 的设置。因此,你可能会希望使用下面其中之一的方
第19 页FreeBSD 使用手册
法:
2. 让FreeBSD 的串口驱动程序自动将LF 转换成CR LF。当然,你的打印机只能在串行口
上。如果要打开这个功能,只要在/etc/printcap 设置文件里为你的打印机用fs 关键词设
置CRMOD 这个位即可。
3. 送一个句柄给打印机告诉它暂时把LF 字符做额外的处理。请参阅你的打印机手册以了
解你的打印机是否支持此功能。如果你找到适用的句柄,修改你的文字过滤程序先送出这些
句柄,再送出要打印的工作。
下面这个文字过滤程序的例子是使用Hewlett-Packard PCL 句柄。先让打印机将LF 视
为LF 和CR 处理,再送出工作。最后,再送出将整页送出的句柄。这个过滤程序应该可以应
付大部分Hewlett-Packard 的打印机。
#!/bin/sh
#
# hpif - Simple text input filter for lpd for HP-PCL based printers
# Installed in /usr/local/libexec/hpif
#
# Simply copies stdin to stdout. Ignores all filter arguments.
# Tells printer to treat LF as CR LF. Ejects the page when done.
printf “\033&k2G” && cat && printf “\033&l0H” && exit 0
exit 2
而下面这个/etc/printcap 的例子是设置一台叫做orchid 计算机。它在第一个并口连
接了一台叫做teak 的Hewlett-Packard LaserJet 3Si 打印机。同时,它使用了上述的script
作为它的文字过滤程序:
#
# /etc/printcap for host orchid
#
teak|hp|laserjet|Hewlett Packard LaserJet 3Si:\
:lp=/dev/lpt0:sh:sd=/var/spool/lpd/teak:mx#0:\
:if=/usr/local/libexec/hpif:
第20 页每一行都重迭在一起
打印机从不换行,把每一行都印在同一行上。这个问题和上述的阶梯效应“相反”。而
且也较罕见。FreeBSD 用来换行的LF 字符被当成CR 字符使得打印机一直回到纸张的最左边
开始打印但却不换行。使用打印机上的设置开关或是控制面板设置使LF 和CR 字符这样被处
理:
打印机会少打某些字
打印时,打印机在一行之中会少打某些字。这个情况在打印时可能会变得愈来愈严重,
有愈来愈多的字打不出来。这是因为打印机接收资料的速度无法跟上计算机通过串行端口送
资料的速度(这个问题在并列端口打印机上应该不会发生)。有两种方式可以解决这个问题:
1. 如果打印机支持XON/XOFF 流量控制,在FreeBSD 里可以用fs 关键词来设置TANDEM 位。
2. 如果打印机支持carrier 流量控制,用fs 关键词来设置MDMBUF 位。确定连接打印机及
计算机的连接线可以配合carrier 流量控制使用。
3. 如果打印机不支持任何一种流量控制,那么在fs 关键词里试着设置NLDELAY、TBDELAY、
CRDELAY、VTDELAY 以及BSDELAY 等位的组合以适当的延迟资料送到打印机。
打出乱码
打印机打出看不懂的符号,而不是我们期望中的数据。这通常是因为序列打印机的通讯
参数设置不正确而造成的。再检查一次br 关键词所设置的传输速率、fs 及fc 关键词所设置
的同位检查。同时也检查打印机是否也使用与/etc/printcap 文件里相同的设置。
没有任何动作发生
如果没有任何反应,那么可能是FreeBSD 的问题而不是硬件的问题。为你的打印机在
/etc/printcap 设置文件里设置记录文件(使用lf 关键词)。下面的例子是用lf 为rattan 这台打
印机设置记录文件:
rattan|line|diablo|lp|Diablo 630 Line Printer:\
:sh:sd=/var/spool/lpd/rattan:\
FreeBSD 使用手册
打印机打印打印机收到
CR CR
CR LF LF
第21 页FreeBSD 使用手册
:lp=/dev/lpt0:\
:if=/usr/local/libexec/if-simple:\
:lf=/var/log/rattan.log
然后试着再打印一次,并检查记录文件(在我们的例子里,是/var/log/rattan.log 这个文
件)里是否有出现错误信息。然后根据错误信息来解决你的问题。
如果你没有用lf 指定记录文件,LPD 默认是/dev/console 将错误信息输出。
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- FreeBSD handbook中文版 11 打印 (2)高级打印机设置 A.过滤 2008-02-23
- FreeBSD handbook中文版 11 打印 (2)高级打印机设置 B.Heade 2008-02-23
- FreeBSD handbook中文版 11 打印 (3)使用打印机 2008-02-23
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash
