You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Windows系统下如何将docx文档打印至指定非默认打印机?

无需切换默认打印机的指定打印方案

方法1:给ShellExecute添加打印机参数(最简单改造)

你的原有代码依赖切换默认打印机,其实ShellExecute的打印命令支持通过/d:参数直接指定目标打印机,完全不需要修改默认设备。

改造后的代码示例:

import win32api
import win32print

# 枚举打印机并获取目标打印机名称
printers = win32print.EnumPrinters(2)
zebra_printer = None
brother_printer = None

for printer in printers:
    if printer[2] == "ZDesigner GX430t":
        zebra_printer = printer[2]
    elif printer[2] == "Brother MFC-9340CDW Printer":
        brother_printer = printer[2]

# 直接指定打印机打印,无需切换默认
if zebra_printer:
    # /d: 参数后跟打印机名称,注意引号包裹含空格的名称
    win32api.ShellExecute(0, "print", filename, f'/d:"{zebra_printer}"', ".", 0)

# 如果需要打印到另一台打印机,同样直接指定
if brother_printer:
    win32api.ShellExecute(0, "print", another_filename, f'/d:"{brother_printer}"', ".", 0)

方法2:使用win32print底层API直接打印(更可控)

如果需要更精细的打印控制(比如监控打印状态、自定义打印设置),可以直接调用win32print的底层API,通过打印机句柄完成打印:

import win32print
import win32api

def print_to_specific_printer(printer_name, file_path):
    # 获取打印机句柄
    hprinter = win32print.OpenPrinter(printer_name)
    try:
        # 初始化打印作业
        job_info = win32print.StartDocPrinter(hprinter, 1, ("Test Print", None, "RAW"))
        win32print.StartPagePrinter(hprinter)
        
        # 读取文件内容并发送到打印机(这里以文本文件为例,若为其他格式需对应处理)
        with open(file_path, "rb") as f:
            content = f.read()
            win32print.WritePrinter(hprinter, content)
        
        win32print.EndPagePrinter(hprinter)
        win32print.EndDocPrinter(hprinter)
    finally:
        win32print.ClosePrinter(hprinter)

# 调用示例
print_to_specific_printer("ZDesigner GX430t", filename)

注意:这种方法针对不同类型的文档(如PDF、Office文件)需要额外处理,比如将文档转换为打印机支持的格式(如RAW或EMF),否则可能无法正确打印。

方法3:使用subprocess调用系统print命令

也可以通过subprocess直接调用Windows系统的print命令,同样支持指定打印机:

import subprocess

def print_with_subprocess(printer_name, file_path):
    # 构造命令,/d指定打印机
    cmd = ['print', f'/d:"{printer_name}"', file_path]
    subprocess.run(cmd, shell=True, check=True)

# 调用示例
print_with_subprocess("ZDesigner GX430t", filename)

内容的提问来源于stack exchange,提问作者Matt Slaughter

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.11 19:20:13