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

Python调用Microsoft Print To PDF打印PDF如何跳过弹窗预设输出路径

解决方案

可以实现无弹窗指定输出路径打印,你之前用的ShellExecute直接调用打印的方式没有提供传入PDF输出路径的参数入口,所以会触发系统弹窗,改用win32print搭配调整打印机参数的方式即可实现需求。

核心思路

  • Microsoft Print to PDF作为Windows内置虚拟打印机,支持通过修改打印配置的PortName参数传入目标PDF输出路径,识别到该参数后会自动跳过路径选择弹窗
  • 不要直接调用ShellExecute触发打印,先调整打印机的配置参数再提交打印任务

环境依赖

首先安装pywin32库:

pip install pywin32

可运行代码示例

import win32print
import win32api
import win32gui
import os

def print_to_pdf(source_file: str, output_pdf_path: str) -> None:
    """
    无弹窗调用Microsoft Print to PDF打印文件到指定PDF路径
    :param source_file: 待打印的源文件路径,支持txt、docx、jpg等系统支持直接打印的格式
    :param output_pdf_path: 输出PDF的完整路径
    """
    printer_name = "Microsoft Print to PDF"
    # 打开打印机获取句柄
    printer_handle = win32print.OpenPrinter(printer_name)
    try:
        # 获取打印机默认配置
        printer_info = win32print.GetPrinter(printer_handle, 2)
        dev_mode = printer_info["pDevMode"]
        # 配置输出路径参数,虚拟打印机会将该值作为输出路径跳过弹窗
        dev_mode.PortName = output_pdf_path
        # 生效配置修改
        win32print.DocumentProperties(
            win32gui.GetForegroundWindow(),
            printer_handle,
            printer_name,
            dev_mode,
            dev_mode,
            win32print.DM_IN_BUFFER | win32print.DM_OUT_BUFFER
        )
        # 提交打印任务
        win32api.ShellExecute(
            0,
            "print",
            source_file,
            f'/d:"{printer_name}"',
            os.path.dirname(source_file),
            0
        )
    finally:
        # 释放打印机句柄
        win32print.ClosePrinter(printer_handle)

# 调用示例
if __name__ == "__main__":
    # 替换为实际的源文件路径和输出路径
    PRINT_SOURCE = r"C:\Users\xxx\Documents\test.docx"
    OUTPUT_PDF = r"C:\Users\xxx\Documents\test_output.pdf"
    print_to_pdf(PRINT_SOURCE, OUTPUT_PDF)

注意事项

  • 待打印的源文件需要是Windows系统关联了默认打开程序且支持直接打印的格式,否则可能触发对应应用的交互弹窗
  • 输出路径如果已存在同名文件会直接覆盖,无确认提示
  • 若打印Office系列文件,需要确保本机安装了完整版本的Office套件,部分精简版Office可能出现打印异常
  • 32位和64位Python对应的pywin32版本要匹配,否则会出现接口调用失败的问题

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 01:36:03