下一页 上一页 目录

6. 打印设置

在打印时您可能会遇到各种情况

6.1 支持 ISO-8859-2 代码页的打印机

一些较新的打印机直接支持 ISO-8859-2 代码布局。其中包括

您需要做的就是命令打印机使用相应的代码页。Hewlett-Packard 打印机的命令序列是
\033(@N\033(s0p12h0s0b4099T
其中 \033Escape 字符的八进制代码。

在下一节中描述了一种使用 /etc/printcap 文件调整打印机以按此布局打印的方法。

6.2 支持其他 8 位代码布局的打印机

如果打印机支持其他带有我们字母的代码布局,如果以适当的方式调整 /etc/printcap 文件,我们仍然可以使用它打印 ISO-8859-2 布局的文本。

我们将以爱普生品牌打印机为例解释该过程,该打印机在瑞典字母表的位置上具有 YUSCII 布局的字符。

lp|ascii|epson|Epson LQ-850:\
        :lp=/dev/lp1:\
        :sd=/usr/spool/lpd/epson:\
        :lf=/usr/spool/lpd/ERRORLOG:\
        :mx#0:\
        :sh:
jus|Epson LQ-850 sa znakovima JUS I.B1.002:\
        :lp=/dev/null:\
        :sd=/usr/spool/lpd/jus:\
        :if=/usr/spool/lpd/jus_filter:\
        :lf=/usr/spool/lpd/ERRORLOG:\
        :mx#0:\
        :sh
latin2|text|Epson LQ-850 sa znakovima po ISO Latin 2:\
        :lp=/dev/null:\
        :sd=/usr/spool/lpd/latin2:\
        :if=/usr/spool/lpd/latin2_filter:\
        :lf=/usr/spool/lpd/ERRORLOG:\
        :mx#0:\
        :sh:
有三个打印队列。第一个是美国(ASCII)字符选择。第二个使用 /var/spool/lpd/jus_epson
#!/bin/sh
/usr/spool/lpd/jus_epson | lpr -Pascii
需要通过过滤器 /var/spool/lpd/jus_epson 过滤文件,并将其放置在第一个打印队列中。过滤器 jus_epson 除了选择瑞典代码布局、将文件从输入复制到输出并在最后再次选择美国布局之外,什么也不做。这是程序中唯一依赖于打印机类型的部分。
#!/bin/sh
# Stampanje dokumenta kodiranih po JUS I.B1.002 na stampac Epson LQ
#
# Biramo srpski (svedski) raspored
/bin/echo "\033R\005\c"
# Ispisujemo dokument
cat
# Biramo ASCII raspored
/bin/echo "\033R\000\c"
第三个队列(queue)是第二个队列的修改版。首先,文档从 Latin 2 转换为 JUS 代码布局,然后使用先前描述的过滤器在开头和结尾添加打印机所需的代码,最后将文件发送到第一个打印队列。
#!/bin/sh
/usr/local/bin/recode --force latin2:yu | \
/usr/spool/lpd/jus_epson | lpr -Pascii
在这里,我们假设我们在 /usr/local/bin 目录中拥有 recode 程序。

为此,您必须在 /usr/spool/lpd(或 /var/spool/lpd)目录中创建子目录 /usr/spool/lpd/epson, /usr/spool/lpd/jus/usr/spool/lpd/latin2

打印应该很容易

  1. 如果没有显式选择队列,或者选择 -Pepson-Pascii,文件将作为 ASCII 打印
    lpr <文件>
  2. 选择队列 -Pjus,文件将作为 JUS I.B1.002 布局的文档打印
    lpr -Pjus <文件>
  3. 选择队列 -Platin2-Ptext,文件将以 ISO-8859-2 布局打印
    lpr -Platin2 <文件>

6.3 PostScript 打印机

如果您使用支持 ISO-8859-2 布局的 PostScript 打印机过滤器之一,则可以轻松打印文件。例如,此类程序有 a2ps 和 GNU enscript。后者支持 ISO-8859-2 布局,而对前者的支持正在开发中。

Red Hat 发行版的 Enscript 可以在 http://rufus.w3.org/linux/RPM “仓库” RPM 包中找到。

GNU enscript

如果您没有安装 GNU enscript,您可以按照程序随附的说明进行安装。除此之外,您还需要一些 Type 1 格式的字体,其中包含我们的字母。一个不错的选择是 IBM Courier,它与 X Windows 系统或 ghostscript 程序一起分发。如果字体存在,但您不知道它的确切位置,您可以使用以下命令找到它

find / -name cour.pf[ab]
在个人 (~/.enscriptrc) 或系统配置文件 (/usr/local/etc/enscript.cfg/usr/loca/etc/enscriptsite.cfg) 中,添加字体文件的路径。此外,GNU enscript 要求每个字体目录中都有一个 font.map 文件,其中包含字体和字体所在文件之间的映射 - 类似于 fonts.dir。您可以使用命令 mkafmmap 创建 font.map 文件。

enscriptsite.cfg 配置文件的示例

...
#  Gde su PostScript fontovi?
AFMPath: /usr/lib/X11/fonts/Type1:/usr/local/lib/ghostscript/fonts
...
# Podrazumevani nacin kodiranja:
DefaultEncoding: latin2
...
# Podrazumevani format papira:
DefaultMedia: A4
...
# lpd bira red za stampanje prekidacem -P...
QueueParam: -P
...
# Za stampanje koristimo naredbu lpr, a ne lp
Spooler: lp
设置完所有内容后,只需使用命令将文件发送到打印机
enscript <文件>

下一页 上一页 目录