我正在将文本字符串打印到打印机,如下所示:
import os
string_value = 'Hello, World!'
printer = os.popen('lpr -P Canon_iP110_series', 'w')
printer.write(string_value)
printer.close()
这工作得很好,以我认为默认的字体/颜色(黑色)将文本打印到打印机。
不过,我想更改文本的一些功能。例如,我想将“Hello”一词加粗,或者将“World”打印为绿色。
我找到了几个与“打印”文本有关的答案,但它们给出了与终端/控制台输出相关的转义码 - 而不是与打印机相关的转义码。例如,如何在 Python 中打印粗体文本?
当我将字符串打印到控制台时,这些转义代码确实有效。例如,
bold_on = '\033[1m'
bold_off = '\033[0m'
string_value = '{0}Hello{1}, World!'.format(bold_on, bold_off)
print(string_value)
输出:
你好,世界!
到控制台。但是,它不会在打印机上将“Hello”文本加粗。
在 Python 中将文本打印到打印机时,如何至少将文本加粗,并可能更改其他字体属性?
(Python 3.9+)
正如 @chepner 评论的那样,在将文本打印到打印机方面,Python 似乎非常基础。我最终做的是使用 FPDF v1.7.2 将文本放入 PDF 文件中。将文件发送到打印机,然后输出具有我定义的属性的文本。
我的示例中与
FPDF
相关的函数在所有平台上的工作方式应该相同。import os # for printing to printer
from fpdf import FPDF # for pdf creation
# set up pdf basics:
pdf = FPDF('P', 'pt', 'Letter') # P(ortrait), points size ref, Letter-size paper
pdf.add_page() # add a blank page to start
pdf.set_font('helvetica', size=12) # optional here, but useful if most text is plain
hello_string = 'Hello'
world_string = ', World!'
# set font to B(old) *and* I(talic)
pdf.set_font('helvetica', size=12, style='BI')
# write string into PDF page, stopping at end of string; line height = 6 pts
pdf.write(h=6, txt=hello_string)
# change back to regular font
pdf.set_font('helvetica', size=12)
# write rest of string into PDF
pdf.write(h=6, txt=world_string)
# output the created page(s) as a PDF file
pdf_filename = 'hello_world.pdf'
pdf.output(pdf_filename)
# finally, print the PDF file to the printer
printer_name = 'Canon_iP110_series'
printer_string = 'lpr -P {0} {1}'.format(printer_name, pdf_filename)
os.system(printer_string)
备注:
\n
换行符,而其他函数则不允许。 write
确实允许换行,并且会在字符串停止的地方停止。下一个 write
函数从上一个函数停止的地方开始。lpstat
(请注意,-d
是可选的;使用 -d
时,lpstat
还会显示设置为默认的打印机):
lpstat -p [-d]
更新(2024 年 11 月):有一个更新的
fpdf
分支,它是最新的且维护良好。它称为 fpdf2
,在撰写本文时版本为 2.8.1。