May. 8th, 2020
Сабж через систему печати LPR.
Официально FreeBSD не поддерживается, но фирма-производитель любезно сообщает нам, что However generic Postscript/PCL driver can be used for Postscript or PCL compatible products. If your product is a Laser product, you will be able to use the Ghostscript hl1250 driver or Ghostscript hl7x0 driver.
Тогда для получения из сабжа PostScript-принтера создаем такой фильтр ps2pcl.sh:
И прописываем в /etc/printcap:
Теперь у нас есть Postscript/PDF принтер, даже с печатью кириллицы проблем нет. Ghostscript прекрасно кушает не только Postscript, но и PDF, если кто ещё не знал.
Хуже оказалось с печатью plain text. Оказывается если просто посылать текст на порт принтера, он печатает пустые страницы. Пробовал преобразовывать концы строк из UNIX в DOS и обратно, пробовал крутить настройки сетевого порта - ничего не помогает. То есть это оказался не line printer, а PCL-only.Первый раз такое чудище трахать буду. Ни разу в жизни не встречал принтера, на который нельзя было бы напечатать текст из командной строки DOS с помощью команды "COPY CON LPT1" (кроме совсем дешевых GDI винпринтеров. Но сабж всё же не из таких, он сетевой принтсервер).
Ладно, в моем распоряжении print/a2ps и print/enscript-a4. Можно прикрутить их в качестве фильтра из текста в PostScript, но какая досада! С Unicode у них совсем никак. Ничего кроме ascii в получившийся PostScript не попадает, в лучшем случае non-ascii отображаются вопросиками.
Выходит совсем без cups всё-таки не обойтись. Неспортивно. Придется поставить пакеты print/cups и print/cups-filters. Но запускать подсистему cups я не буду, просто возьму от неё одну утилиту и использую в фильтре txt2pcl.sh:
И добавляем в /etc/printcap запись для текстового принтера:
Можно пользоваться. Можно даже раздать через lpd.
ЗЫ Если кто знает, как можно на этом принтере печатать текст НЕ преобразованием через Postscript - прошу высказаться в комментариях. На прочих виденных мною подобных устройствах можно было или просто отправить текст на локальный или сетевой порт, или склеить в фильтре нужный шрифт+текст и опять же отправить полученное на порт.
Официально FreeBSD не поддерживается, но фирма-производитель любезно сообщает нам, что However generic Postscript/PCL driver can be used for Postscript or PCL compatible products. If your product is a Laser product, you will be able to use the Ghostscript hl1250 driver or Ghostscript hl7x0 driver.
Тогда для получения из сабжа PostScript-принтера создаем такой фильтр ps2pcl.sh:
#!/bin/sh /usr/local/bin/gs -q -dBATCH -dNOPAUSE -dPARANOIDSAFER -dSAFER \ -sDEVICE=hl1250 -sPAPERSIZE=a4 -r600x600 \ -dDuplex=true \ -sOutputFile=- - && exit 0 exit 2
И прописываем в /etc/printcap:
ps|Brother HL-L2340D series PostScript:\ :sh:\ :mx#0:\ :lp=9100@192.168.1.74:\ :if=/usr/local/etc/ps2pcl.sh:\ :sd=/var/spool/output/lpd2:lf=/var/log/lpd-errs:
Теперь у нас есть Postscript/PDF принтер, даже с печатью кириллицы проблем нет. Ghostscript прекрасно кушает не только Postscript, но и PDF, если кто ещё не знал.
Хуже оказалось с печатью plain text. Оказывается если просто посылать текст на порт принтера, он печатает пустые страницы. Пробовал преобразовывать концы строк из UNIX в DOS и обратно, пробовал крутить настройки сетевого порта - ничего не помогает. То есть это оказался не line printer, а PCL-only.
Ладно, в моем распоряжении print/a2ps и print/enscript-a4. Можно прикрутить их в качестве фильтра из текста в PostScript, но какая досада! С Unicode у них совсем никак. Ничего кроме ascii в получившийся PostScript не попадает, в лучшем случае non-ascii отображаются вопросиками.
Выходит совсем без cups всё-таки не обойтись. Неспортивно. Придется поставить пакеты print/cups и print/cups-filters. Но запускать подсистему cups я не буду, просто возьму от неё одну утилиту и использую в фильтре txt2pcl.sh:
#!/bin/sh exec 2> /dev/null CHARSET=utf-8 ; export CHARSET /usr/local/sbin/cupsfilter -i text/plain - |\ /usr/local/bin/gs -q -dBATCH -dNOPAUSE -dPARANOIDSAFER -dSAFER \ -sDEVICE=hl1250 -sPAPERSIZE=a4 -r600x600 \ -dDuplex=true \ -sOutputFile=- - && exit 0 exit 2
И добавляем в /etc/printcap запись для текстового принтера:
lp|Brother HL-L2340D series line printer:\ :sh:\ :mx#0:\ :lp=9100@192.168.1.74:\ :if=/usr/local/etc/txt2pcl.sh:\ :sd=/var/spool/output/lpd1:lf=/var/log/lpd-errs:
Можно пользоваться. Можно даже раздать через lpd.
ЗЫ Если кто знает, как можно на этом принтере печатать текст НЕ преобразованием через Postscript - прошу высказаться в комментариях. На прочих виденных мною подобных устройствах можно было или просто отправить текст на локальный или сетевой порт, или склеить в фильтре нужный шрифт+текст и опять же отправить полученное на порт.