пятница, 10 июля 2009 г.

Печать из dosemu (консоли) в 866 кодировке (и не только)

Так сказать ТУ: Есть клиенты (подключенные по XDMCP к серверу OpenSUSE 11.1) работающие с foxpro'шными программами через xdosemu, есть принтер (hp laserjet 1200) подключенный к серверу, настроенный и рабочий cups.
ТЗ: В конце рабочего дня из фоксовских программ надо печать "ведомости" на hp1200 естественно в 866 кодировке.

Приступим:
1. проверяем как правильно ли работает печать из линуксовой консоли
$lpr file.txt
lpr: Error - no default destination available.

Ага, не указан принтер по умолчанию. Идем на http://servername:631 и выбираем принтером по умолчанию hplj1200.

2. Теперь остается научиться печать русские тексты и псевдографику. Для этого будем использовать a2ps и шрифты sharatype. Готовый архив с настройками и шрифтами лежит здесь.
Качаем и дальше делаем следующее:
* Разархивируем архив.
* Скопируем файл encoding/ibm-cp866.edf в /usr/share/a2ps/encoding/
* Добавляем содержимое файла encoding.map.add к файлу /usr/share/a2ps/encoding/encoding.map
* Копируем файлы из папки afm/ в папку /usr/share/a2ps/afm/
* Копируем файлы из папки fonts/ в папку /usr/share/a2ps/fonts/
* В папке /usr/share/a2ps/afm запускаем ./make_fonts_map.sh && mv fonts.map.new fonts.map

При печати указывать кодировку 866 или ту которая нужна и поддерживается a2ps.

Пример:
$a2ps --encoding=866 file

3. Вносим изменения в /etc/dosemu/dosemu.conf
$_lpt1 = "a2ps --encoding=866 --medium=a4 -f 6.5 "

В общем-то все.

ЗЫ: Опции последнего пункта, кроме --encoding=866 не обязательны.

5 комментариев:

  1. А как насчёт печати ESC-последовательности ? Как печатать вывод в котором есть ESC/P-команды ?

    ОтветитьУдалить
  2. Под OpenSuse 11.1 8 месяцев работы - полет нормальный ))

    ОтветитьУдалить
  3. А установка позиции каретки, межстрочного и межсимвольного интервала. Установка сжатого, расширенного, жирного, курсивного шрифта... Эти ESC/P команды отрабатывают ?

    ОтветитьУдалить
  4. На епсанах вот таких http://www.nix.ru/autocatalog/printers_epson/Epson_FX890_pin_USB_LPT_19295.html работает.

    ОтветитьУдалить
  5. На принтерах Epson можно и нужно без a2ps.

    Это же Epson. Там напрямую можно гнать поток из DOSEmu через lpr на принтер без фильтрации.

    Я про Samsung, Xerox и др.

    А a2ps ESC-последовательности не обрабатывает. Проверил ещё раз для надёжности.

    ОтветитьУдалить