Python Selenium实现网页转PDF:指定文件名与存储路径
使用Selenium控制Chrome保存PDF的文件名和路径
你可以通过调整Chrome的打印配置参数,实现指定PDF文件名和存储路径的需求,以下是修改后的完整代码及关键说明:
修正后的代码
import os import json from selenium import webdriver # 获取系统用户名(修正原代码变量名笔误) user_name = os.environ.get('username') options = webdriver.ChromeOptions() # 自定义文件名和存储路径 custom_file_name = "自定义文档.pdf" save_directory = f"C:\\Users\\{user_name}\\Documents\\mr\\" # 确保目标存储目录存在,避免因目录不存在导致保存失败 os.makedirs(save_directory, exist_ok=True) # 配置Chrome打印预览的持久化设置 print_settings = { "recentDestinations": [{ "id": "Save as PDF", "origin": "local", "account": "", "filename": custom_file_name # 指定PDF文件名 }], "selectedDestinationId": "Save as PDF", "version": 2, "saveToLocalPath": save_directory # 指定存储目录 } # 配置Chrome偏好设置 prefs = { 'printing.print_preview_sticky_settings.appState': json.dumps(print_settings), "download.default_directory": save_directory, "download.prompt_for_download": False, "download.directory_upgrade": True, "plugins.always_open_pdf_externally": True } options.add_experimental_option('prefs', prefs) options.add_argument('--kiosk-printing') # 初始化驱动并访问目标页面 driver = webdriver.Chrome(options=options) driver.get("https://your-target-url.com") # 替换为你的目标网页 # 执行打印操作,自动保存为配置好的PDF driver.execute_script('window.print();') # 关闭浏览器驱动 driver.quit()
关键修改点说明
- 修正变量名笔误:原代码中
ser_name应为user_name,否则会触发未定义变量错误 - 强制确保目录存在:通过
os.makedirs(save_directory, exist_ok=True)自动创建不存在的目录,避免保存失败 - 指定文件名:在
print_settings的recentDestinations对象中添加"filename"字段,直接定义PDF的保存文件名 - 锁定存储路径:同时配置
saveToLocalPath和download.default_directory,确保Chrome将PDF保存到指定目录 - 静默打印:
--kiosk-printing参数让Chrome跳过打印预览弹窗,直接按配置完成保存
注:如果不同Chrome版本出现配置不生效的情况,可以手动打开Chrome打印预览并完成一次PDF保存,然后导出Chrome的打印设置JSON,对比调整配置结构。
内容的提问来源于stack exchange,提问作者Abdelrahman Keraitam
相关产品推荐
相关产品推荐

