LINUX.ORG.RU

Подскажите как печатать koi8 ascii файлы с CUPS


0

0

Такая проблема:

Дистрибутив RH9.0, cups 1.1.17. Принтер физически подключен к другому компьютеру, работает под Slackware 8.0 и LPRng. Принтер - HP4M (постскрипт) со встроенными шрифтами cp866.

Печать из tex (dvi->ps ...) по-русски без проблем.
Печать enscript тоже - но только после скачивания/инсталляции кириллических шрифтов для enscript. Они хороши для печати 2х страниц на лист, но слишком мелкие для обычной печати.

lpr koi8.txt

не работает, потому что текстовые файлы cups преобразует в постскрипт своим фильром texttops (см /etc/cups/mime.convs) и это преобразование для koi8 ascii файлов не работает - символы просто не выводятся. Не нашел никакой возможности указать lpr кодировку файла. Если кто знает, как побороть, пожалуйста, напишите.

Но вообще такой способ медленный и не использует встроенных шрифтов принтера (cp866, русских постскрипт шрифтов у него нет). Во многих случаях было бы замечательно посылать ascii файл нефильрованным - например

cat koi8.txt | koi2alt | lpr -o raw

Проблема в том, что при этом по непонятной причине посланный файл не пропускается сервером печати через входной фильтр (magicfilter). Этот фильтр добавляет символы возврата каретки в конце каждой строки и form feed в конце документа. Фильтр работает нормально при печати с самого компьютера, на котором стоит LPRng и к которому подключен принтер... При печати из под cups получается "лесенка" и последняя страница не вылезает из принтера. Это происходит с любыми ascii-файлами, не только кириллическими. В redhat-config-printer поставил флажки "посылать CR и FF", не помогло.

Замаялся... Что такое из raw? Похоже, что не raw... Буду очень благодарен за любые указания на то, как побороть проблему.

anonymous

Не надо печатать текст. Надо печатать PostScript. А текст преобразовывать в ПС перед печатью, используя любимые шрифты и пр. дела.

Deleted
()
Ответ на: комментарий от Deleted

Спасибо за совет. Это я и так знаю. Хочу использовать шрифты принтера. При больших объемах ascii печати выигрыш в скорости актуален. Ладно, разберусь, конечно...

anonymous
()

lpr -P lp0 (имя твоего принтера в /etc/printcap с твоим собственным фильтром не magic и не aps) далее имя файла с asci text (если надо печатать из иксов - то в фильтр надо добавить вызов ps2ascii до вызова translit) содержимое фильтра для perl: /var/spool/lpd/lp0/myfilter

#!/usr/bin/perl # The above line should really have the whole path to perl # This script must be executable: chmod 755 filter while(<STDIN>) {system("translit") && die "some error"; chomp $_; print "$_\r\n";}; # You might also want to end with a form feed: print "\f"; print "\f"; #end script

ЗЫ надо скачать перекодировщик translit, сделать, как в нём советуют и из этого фильра вызывать его для перекодировки к примеру из KOI8-R в cp866 на лету. Можно указывать для транслита параметр типа -t cp1251-KOI8.rus буде означать перекодировку из в... Кстати можно использовать встроенный в glibc iconv -f (rom) -t(o) Nickonor inc.

anonymous
()
Ответ на: комментарий от anonymous

Забыл сказать, что всё вышесказанное работает с lpd daemon типа ps aux |grep lpd. У меня эта кухня пашет с матричным принтером. Если надо могу накидать линков по теме фонтов локалей печати итд., когда все прочтаешь, вопросов почти не останется :-) Nickonor inc.

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.