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

如何在Selenium Python中自动将网页保存为PDF并指定文件名

解决ChromeDriver自动保存网页为PDF时弹出文件名窗口的问题

你的核心问题在于错误配置了文件名的设置项,Chrome打印生成PDF的文件名不是通过download.name控制的,而是需要在打印预览的配置里指定。以下是修正后的完整方案:

修正后的代码

import json
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
import time

# 替换为你的实际路径
download_path = "/绝对路径/到你的下载目录"
ser = Service("/绝对路径/到chromedriver")

# 配置打印预览的核心参数,包含文件名
settings = {
    "appState": {
        "recentDestinations": [
            {
                "id": "Save as PDF",
                "origin": "local",
                "account": "",
                "filename": "test.pdf",  # 这里指定PDF文件名
                "margin": 0,
                "size": "auto"
            }
        ],
        "selectedDestinationId": "Save as PDF",
        "version": 2,
        "isHeaderFooterEnabled": False,  # 可选:关闭默认页眉页脚
        "margin": 0,
        "size": "auto"
    }
}

prefs = {
    'printing.print_preview_sticky_settings': json.dumps(settings),
    'download.default_directory': download_path,
    'savefile.default_directory': download_path,
    'download.prompt_for_download': False,
    "download.directory_upgrade": True,
    "safebrowsing_for_trusted_sources_enabled": False,
    "safebrowsing.enabled": False,  # 关闭安全浏览避免干扰自动保存
    "plugins.always_open_pdf_externally": False,  # 禁用外部PDF打开,确保直接保存
    "profile.default_content_settings.popups": 0
}

options = webdriver.ChromeOptions()
options.add_experimental_option('prefs', prefs)
options.add_argument('--kiosk-printing')  # 启用自助打印模式,自动确认保存
options.add_argument('--disable-extensions')  # 禁用扩展避免冲突

driver = webdriver.Chrome(service=ser, options=options)
driver.maximize_window()
driver.get('你的目标网页URL')

# 等待页面完全加载(可根据实际情况替换为显式等待)
time.sleep(3)

# 触发打印,此时将自动保存为指定文件名到目标目录
driver.execute_script('window.print();')

# 等待保存完成,时间可根据页面复杂度调整
time.sleep(5)
driver.quit()

关键修改说明

  1. 正确配置文件名:在appState的recentDestinations对象中添加filename字段,这是Chrome打印保存PDF时识别文件名的唯一正确位置,download.name仅适用于普通文件下载,对打印生成的PDF无效。
  2. 调整PDF相关偏好:将plugins.always_open_pdf_externally设为False,避免Chrome尝试用外部程序打开PDF,导致保存流程中断。
  3. 简化无效配置:移除了冗余的margin和size重复配置,关闭安全浏览策略避免自动保存被拦截。

额外注意事项

  • 确保download_path是绝对路径,且Chrome有该目录的写入权限。
  • ChromeDriver版本必须与本地安装的Chrome浏览器版本完全匹配,版本不兼容会导致配置失效。
  • 页面加载完成后再执行打印,建议使用显式等待(如WebDriverWait)替代固定sleep,提升稳定性。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 09:57:17