如何在Python中将特定格式的文本打印到打印机?

问题描述 投票:0回答:1

我正在将文本字符串打印到打印机,如下所示:

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+)

python text printing
1个回答
0
投票

正如 @chepner 评论的那样,在将文本打印到打印机方面,Python 似乎非常基础。我最终做的是使用 FPDF v1.7.2 将文本放入 PDF 文件中。将文件发送到打印机,然后输出具有我定义的属性的文本。

我的示例中与

FPDF
相关的函数在所有平台上的工作方式应该相同。
本示例中与打印机相关的功能应在 macOS 和 Linux 上运行。 Windows 需要不同的打印方法。

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)

备注:

  • 我必须调整行高来解决一些重叠问题
  • 某些 FPDF 函数允许在字符串中使用
    \n
    换行符,而其他函数则不允许。
    write
    确实允许换行,并且会在字符串停止的地方停止。下一个
    write
    函数从上一个函数停止的地方开始。
  • FPDF 还具有设置文本颜色的功能 - 还有其他一些有趣的功能
  • FPDF 文档 已移动。我通过搜索找到了很多例子。截至 2023 年 3 月 17 日,我能够访问 GitHub 上的 Reingart 的 FPDF 教程,其中提供了一些很棒的示例
  • 要找到所需的打印机名称,请使用
    lpstat
    (请注意,
    -d
    是可选的;使用
    -d
    时,
    lpstat
    还会显示设置为默认的打印机):

    lpstat -p [-d]

更新2024 年 11 月):有一个更新的

fpdf
分支,它是最新的且维护良好。它称为
fpdf2
,在撰写本文时版本为 2.8.1。

© www.soinside.com 2019 - 2024. All rights reserved.