Python 可以通过多种方式控制打印机进行打印操作,以下是几种常用的方法:
使用 win32print (Windows 系统)
安装
pip install pywin32
示例代码
import win32print
import win32api
# 获取默认打印机
default_printer = win32print.GetDefaultPrinter()
print(f"默认打印机: {default_printer}")
# 列出所有打印机
printers = win32print.EnumPrinters(win32print.PRINTER_ENUM_LOCAL)
print("可用打印机:")
for printer in printers:
print(f"- {printer[2]}")
# 打印文本文件
file_to_print = "document.txt"
printer_name = default_printer
# 使用系统命令打印
win32api.ShellExecute(0, "print", file_to_print, f'"{printer_name}"', ".", 0)
使用 cups (Linux/macOS 系统)
安装
pip install pycups
示例代码
import cups
# 连接CUPS服务器
conn = cups.Connection()
# 列出所有打印机
printers = conn.getPrinters()
print("可用打印机:")
for printer in printers:
print(f"- {printer}")
# 打印文件
printer_name = list(printers.keys())[0] # 使用第一个打印机
file_to_print = "document.pdf"
job_id = conn.printFile(printer_name, file_to_print, "Python Print Job", {})
print(f"打印任务已提交,ID: {job_id}")
使用 reportlab 生成 PDF 并打印
安装
pip install reportlab
示例代码
from reportlab.pdfgen import canvas
import subprocess
# 创建PDF文档
pdf_file = "output.pdf"
c = canvas.Canvas(pdf_file)
c.drawString(100, 750, "Python 打印测试")
c.drawString(100, 730, "这是一份通过Python生成的PDF文档")
c.save()
# 打印PDF (Linux/macOS)
subprocess.run(["lp", pdf_file])
# Windows系统打印
# subprocess.run(["notepad", "/p", pdf_file])
使用 python-escpos 控制热敏打印机
安装
pip install python-escpos
示例代码
from escpos.printer import Usb
# 连接USB打印机 (需替换厂商ID和产品ID)
p = Usb(0x0416, 0x5011)
# 打印内容
p.text("Python ESC/POS 打印测试\n")
p.text("这是一行文本\n")
p.text("----------------\n")
p.barcode("123456789", "EAN13")
p

最低0.47元/天 解锁文章
1万+

被折叠的 条评论
为什么被折叠?



