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

Windows任务计划执行bat/py文件时如何避免打印尺寸错误?

问题描述

我正在执行一项从手持设备通过Windows服务器向打印机发送信息的任务,通过批处理文件(bat)启动Python文件实现:

批处理文件代码

title "RestApi"
call D:\ProgramData\Miniconda3\Scripts\activate.bat
start "Rest" D:\ProgramData\Miniconda3\python.exe D:\path\Rest.py

Python打印代码

cmd = f'mspaint /pt ' + r'card.png ' + '"' + printer + '"'
print(cmd)
p = subprocess.Popen(cmd, shell=True)

核心问题:以管理员身份手动启动bat文件时打印正常,但通过Windows任务计划以SYSTEM账户执行时,打印尺寸错误,部分内容无法显示。已尝试直接在任务计划中执行python.exe并传入Python文件参数,但无效。


原因分析
  1. 账户环境差异:SYSTEM账户与普通管理员账户拥有独立的打印机配置环境。手动运行时使用的是当前管理员用户的打印机偏好(含#9信封的尺寸配置),而SYSTEM账户的默认纸张规格可能并非#9信封,导致mspaint调用时使用错误参数。
  2. mspaint参数局限性:mspaint /pt命令完全依赖当前用户的打印机默认设置,SYSTEM账户下未配置目标打印机的默认纸张为#9信封,因此触发尺寸错误。
  3. 工作目录与权限问题:SYSTEM账户执行任务时的默认工作目录并非脚本所在路径,若card.png使用相对路径,可能导致图片加载异常,间接引发打印尺寸错误。

解决办法

1. 配置SYSTEM账户的打印机默认纸张

  • 使用psexec -i -s cmd.exe(需PsTools工具)打开SYSTEM权限的命令提示符。
  • 在该窗口中打开控制面板的打印机设置,找到目标打印机,进入打印首选项,将默认纸张尺寸设置为#9信封并保存。

2. 替换mspaint,使用可控的打印库

改用win32print+PIL组合直接控制打印参数,避免依赖默认设置:

import win32print
import win32ui
from PIL import Image

# 目标打印机名称
printer_name = printer  # 替换为你的打印机变量
img_path = r"D:\path\card.png"  # 图片绝对路径

# 打开打印机并设置纸张尺寸(#9信封对应PaperSize=20,需根据打印机支持情况调整)
hprinter = win32print.OpenPrinter(printer_name)
devmode = win32print.GetPrinter(hprinter, 2)["pDevMode"]
devmode.PaperSize = 20
win32print.SetPrinter(hprinter, 2, devmode, 0)
win32print.ClosePrinter(hprinter)

# 执行打印
img = Image.open(img_path)
hDC = win32ui.CreateDC()
hDC.CreatePrinterDC(printer_name)
hDC.StartDoc("Card Print")
hDC.StartPage()
# 适配信封尺寸拉伸图片
hDC.StretchBlt((0, 0, devmode.PaperWidth, devmode.PaperHeight), img, (0, 0, img.width, img.height))
hDC.EndPage()
hDC.EndDoc()

3. 修改任务计划的执行账户

将任务计划的执行账户从SYSTEM改为手动运行正常的管理员账户:

  • 打开任务计划程序,进入目标任务的属性→安全选项。
  • 选择“不管用户是否登录都要运行”,指定已配置好打印机的管理员账户并输入密码保存。

4. 修正Python中的文件路径

确保card.png使用绝对路径,避免SYSTEM账户工作目录不匹配的问题:

img_path = r"D:\path\card.png"  # 替换为实际绝对路径
cmd = f'mspaint /pt "{img_path}" "{printer}"'

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 09:55:22