Python3.6实现Chrome自动打印/保存PDF:指定存储路径问题
嘿,我帮你搞定这个Chrome打印自定义保存路径的问题!你现在需要用Selenium控制Chrome,把只读PDF通过打印转成可写PDF,同时指定自定义保存文件夹,而不是默认的下载目录对吧?咱们直接修改Chrome的配置就能实现,下面是具体的代码调整和说明:
核心思路
Chrome的“打印另存为PDF”本质上是触发了下载行为,所以只要通过Chrome的偏好设置指定默认下载路径,同时配置打印默认目标为“保存为PDF”,就能跳过弹窗直接存到你想要的文件夹。
完整代码示例
import json import time from selenium import webdriver from selenium.webdriver.chrome.options import Options # 替换成你想要的自定义文件夹绝对路径(Windows用原始字符串或双反斜杠) target_folder = r"C:\Your\Custom\Save\Folder" # 配置Chrome浏览器选项 chrome_options = Options() # 核心配置:设置下载路径+打印偏好 chrome_options.add_experimental_option("prefs", { # 指定自定义下载/保存路径(必须是绝对路径) "download.default_directory": target_folder, # 关闭保存弹窗提示 "download.prompt_for_download": False, # 允许路径升级 "download.directory_upgrade": True, # 安全浏览启用(避免拦截) "safebrowsing.enabled": True, # 配置打印默认目标为“保存为PDF”,跳过打印选择框 "printing.print_preview_sticky_settings.appState": json.dumps({ "recentDestinations": [{ "id": "Save as PDF", "origin": "local", "account": "" }], "selectedDestinationId": "Save as PDF", "version": 2 }) }) # 可选:启用无头模式(后台运行,不显示浏览器窗口) chrome_options.add_argument("--headless=new") chrome_options.add_argument("--disable-gpu") chrome_options.add_argument("--print-to-pdf") # 初始化浏览器并打开只读PDF driver = webdriver.Chrome(options=chrome_options) # 本地PDF用file:///前缀,注意路径格式(Windows要把\换成/) driver.get("file:///C:/Path/To/Your/ReadOnly.pdf") # 等待页面加载完成(根据文件大小调整时间) time.sleep(2) # 触发打印操作(模拟Ctrl+P) driver.execute_script("window.print();") # 等待保存完成(大文件需要延长时间) time.sleep(5) # 关闭浏览器 driver.quit()
关键注意事项
- 路径必须是绝对路径:
download.default_directory不能用相对路径,否则Chrome会忽略并使用默认下载文件夹 - Windows路径格式:要么用原始字符串
r"",要么把路径里的\换成\\,避免转义字符报错 - 版本兼容性:如果你的Chrome版本较新,打印偏好的JSON结构可能有微调,要是遇到问题可以检查Chrome的打印预览设置里的状态参数
- 等待时间:
time.sleep()的时长要根据PDF文件大小调整,确保文件完全保存后再关闭浏览器
内容的提问来源于stack exchange,提问作者PKG
相关产品推荐
相关产品推荐

