Включение Bold и Color с LPT параллельным принтером

1213
Blue Ice

Я знаю, как выводить текст на мой принтер HP Deskjet 420 в lubuntu с помощью bash:

echo -e "line of text" > /dev/lp0 

Есть ли способ печати текста, который выделен жирным шрифтом или цветом? Должен ли я выводить какую-то команду escape на принтер?

Благодарю.

2
Преобразование из экранированного ANSI текста в pdf (в настоящее время выполняемое aha + wkhtmltopdf) кажется чем-то вроде «enscript» или «paps», которое должно быть изначально в состоянии сделать; попробуйте отправить сообщение об ошибке с одним из них. 9 лет назад 0

1 ответ на вопрос

1
terdon

Чтобы отобразить жирный или цветной текст в терминале, используйте escape-коды ANSI . Например, попробуйте это:

$ echo -e '\ 033 [01; 1m этот текст будет выделен жирным шрифтом \ 033 [00; 0m это не будет'
этот текст будет выделен жирным шрифтом это не будет

Экранирующая последовательность \033[01;1mвызывает выделение следующего текста жирным шрифтом и \033[00;0mотключает все атрибуты, поэтому он возвращается к нормальному состоянию.

Смотрите здесь хороший список различных escape-последовательностей.

К сожалению, lpне знает, как с этим бороться. Он умеет печатать только постскриптумные файлы. Поэтому нам нужен способ превращения управляющих символов ANSI в форматированный постскриптум. Я был заинтригован этим вопросом, поэтому я опубликовал один из своих собственных на U & L, спрашивая о способах интерпретации экранирования ANSI как команд PostScript. Ниже приводится ответ, который я получил, пожалуйста, проголосуйте!

Вам понадобятся следующие инструменты:

  • aha : Ansi HTML Adapter, эта программа может переводить управляющие коды ANSI в HTML.

    DESCRIPTION aha takes SGR-colored Input and prints W3C conform HTML-Code. aha reads the Input from a file or stdin and writes HTML-Code to stdout. 

    Установка:

    sudo apt-get install aha 
  • wkhtmltopdf : Конвертер HTML в PDF

    Description Converts one or more HTML pages into a PDF document, not using wkhtmltopdf patched qt. 

    Установка:

    sudo apt-get install wkhtmltopdf 

Теперь соберите их все вместе. Я буду использовать эту команду, вывод которой показан на рисунке ниже:

echo -e '\033[01;1mbold\033[00;0m,not bold, and \033[32;1mgreen' 

Итак, давайте распечатаем это:

echo -e '\033[01;1mbold\033[00;0m,not bold, and \033[32;1mgreen' |  aha | wkhtmltopdf - - | lpr 

И это все, что напечатает красивую, отформатированную жирную и цветную строку текста.

Я чувствую себя очень старым, что кто-то не узнает об этом сразу. :) Alan B 11 лет назад 0
Я думаю, что это больше связано с вашей общей увлеченностью, чем ваш возраст :) terdon 11 лет назад 1
@terdon Я уверен, что это какой-то код перехода. Я сделал быстрый скрипт bash, чтобы увидеть, какие символы он может печатать, и его нечетный набор из 256 символов, которые не являются bash. Используются \ x и hex (например, \ x9e), и они сильно отличаются от символов bash Lubuntu для тех же значений. Blue Ice 11 лет назад 0
Например, \ x1 - это смайлик, а \ xc - разрыв страницы. Не слишком много в bash :) Blue Ice 11 лет назад 0
@ Синий, извините, но я абсолютно не понимаю, о чем вы говорите :). Но подождите, я узнал, как это сделать, я скоро выложу обновленный ответ. terdon 11 лет назад 0
@BlueIce Хорошо, я понял, что вы имеете в виду, на самом деле это то же самое, что `\ 033` и` \ x` являются `ESC`. В любом случае, взгляните на обновленный ответ и отправляйтесь наверх, чтобы получить очень хороший ответ по U & L, который дал его мне :). terdon 11 лет назад 0
@terdon Хорошо. Я проверю это. Blue Ice 11 лет назад 0