You need to enable JavaScript to run this app. Python使用subprocess.run调用SumatraPDF打印时参数传递异常如何解决
优惠活动
大模型
产品
解决方案
定价
更多

Python使用subprocess.run调用SumatraPDF打印时参数传递异常如何解决

问题原因

你当前写法的问题在于:使用列表形式传递命令参数时,每个列表项对应一个独立的命令行参数,你把双引号直接写在了-print-settings的参数内容中,导致实际传给SumatraPDF的配置参数自带多余的双引号,程序无法正常识别。同时列表传参场景下不需要开启shell=True,反而会额外增加转义风险。

解决方法

方案1(推荐,无需启用shell)

把-print-settings和对应的配置拆成两个独立的列表项,不需要额外加双引号:

import subprocess
args = [
    'SumatraPDF.exe',
    '-print-to-default',
    '-silent',
    '-exit-on-print',
    '-print-settings',
    'landscape,1,5x',
    'qrcode_and_date.pdf'
]
subprocess.run(args, check=True)

check=True参数会在命令执行失败时主动抛出异常,方便排查问题,不需要可以删除。

方案2(必须使用shell=True的场景)

直接传递完整的命令字符串即可:

import subprocess
cmd = 'SumatraPDF.exe -print-to-default -silent -exit-on-print -print-settings "landscape,1,5x" qrcode_and_date.pdf'
subprocess.run(cmd, shell=True, check=True)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.17 11:15:04