我知道如何使用 bash 在 lubuntu 上将文本回显到我的 HP Deskjet 420 打印机:
echo -e "line of text" > /dev/lp0
有没有办法打印粗体或彩色文本?我是否应该向打印机回显某种转义命令?
谢谢。
答案1
在终端中回显粗体或彩色文本的方法是使用ANSI 转义代码。例如,试试这个:
$ echo -e '\033[01;1m此文本将为粗体\033[00;0m这不会'
此文本将以粗体显示这不会
转义序列\033[01;1m
导致以下文本大胆的并\033[00;0m
关闭所有属性,使其恢复正常。
看这里以获得各种转义序列的详细列表。
不幸的是,lp
它不知道如何处理这个问题。它只知道如何打印 PostScript 文件。因此,我们需要一种将 ANSI 转义字符转换为格式化 PostScript 的方法。我对这个问题很感兴趣,所以我在 U&L 上发布了我自己的一个询问如何将 ANSI 转义解释为后记命令。以下内容来自回答我到了,请点赞吧!
您将需要以下工具:
aha
:Ansi HTML 适配器,该程序可以将 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
就是这样,它将打印出一行漂亮的、格式化的、粗体和彩色的文本。