在Python中实现文件打印,主要分为Windows和跨平台两种方案。以下是具体方法:
一、Windows系统打印文件
-
使用
win32print
库该库是Windows平台专用的打印控制库,需通过
pip install pywin32
安装。示例代码如下:import win32print import win32api def print_file(file_path, printer_name): hPrinter = win32print.OpenPrinter(printer_name) win32api.StartDocPrinter(hPrinter, 1, win32print.CreateDocumentInfo(0, "RAW")) win32api.StartPagePrinter(hPrinter) with open(file_path, "rb") as f: win32api.WritePrinter(hPrinter, f.read()) win32api.EndPagePrinter(hPrinter) win32api.EndDocPrinter(hPrinter) win32print.ClosePrinter(hPrinter) # 示例调用 print_file("example.pdf", "\\\\printer_name\\PrinterName")
*注意:需替换
printer_name
为实际打印机名称,Windows共享打印机需使用完整路径(如\\printer_name\\PrinterName
)。 -
调用Windows命令行
print
命令通过
subprocess
模块执行系统命令实现打印,示例代码:import subprocess def print_file_command(file_path, printer_name): cmd = f'print /D:"{printer_name}" "{file_path}"' subprocess.run(cmd, shell=True, check=True) # 示例调用 print_file_command("example.pdf", "HP LaserJet")
*注意:需指定正确的打印机名称和路径,Windows共享打印机需使用完整路径。
二、跨平台(Linux/MacOS)打印文件
-
使用
cups
库Linux系统可通过
cups
库实现打印,需安装cups
服务并配置打印机。示例代码:import cups def print_file_cups(file_path, printer_name): conn = cups.Connection() job = conn.printFile(printer_name, file_path, {}) job.wait() # 示例调用 print_file_cups("example.pdf", "default")
*注意:需确保
cups
服务已启动,并配置好打印机名称。 -
使用
subprocess
调用系统命令通过
lp
命令实现跨平台打印,示例代码:import subprocess def print_file_system(file_path, printer_name): cmd = f'lp -d "{printer_name}" "{file_path}"' subprocess.run(cmd, shell=True, check=True) # 示例调用 print_file_system("example.pdf", "network_printer")
*注意:需替换为实际打印机名称,Linux系统通常使用
lp
命令。
三、通用注意事项
-
文件路径处理 :建议使用
os.path.join
构建跨平台文件路径,避免路径分隔符问题。 -
异常处理 :实际应用中需添加异常处理逻辑,例如检查文件是否存在、打印机是否可用等。
-
资源管理 :使用
with
语句或显式关闭文件句柄,防止资源泄漏。
以上方法可根据操作系统和需求选择,Windows用户优先推荐win32print
或命令行调用,跨平台用户可选cups
或系统命令。