【发布时间】:2015-09-17 03:36:11
【问题描述】:
我正在尝试在 Chrome 中自动打印保存网页为 pdf。
我已经检查了 webbrowser 模块,但它似乎不是为此目的而设计的。
我探索了 wkhtmltopdf 作为替代方案,但下载文件时它似乎被病毒感染了。
感谢您的建议。
【问题讨论】:
标签: html python-2.7 automation pdf-generation
我正在尝试在 Chrome 中自动打印保存网页为 pdf。
我已经检查了 webbrowser 模块,但它似乎不是为此目的而设计的。
我探索了 wkhtmltopdf 作为替代方案,但下载文件时它似乎被病毒感染了。
感谢您的建议。
【问题讨论】:
标签: html python-2.7 automation pdf-generation
这对我在 Windows 7 x64 上使用 Chrome 62.0.3202.94、ChromeDriver 2.33.506120、Selenium 3.4.3 和 Python 2.7.14 或 3.6.3 有效:
import json
from selenium import webdriver
appState = {
"recentDestinations": [
{
"id": "Save as PDF",
"origin": "local",
"account": ""
}
],
"selectedDestinationId": "Save as PDF",
"version": 2
}
profile = {'printing.print_preview_sticky_settings.appState': json.dumps(appState)}
chrome_options = webdriver.ChromeOptions()
chrome_options.add_experimental_option('prefs', profile)
chrome_options.add_argument('--kiosk-printing')
driver = webdriver.Chrome(chrome_options=chrome_options)
driver.get('https://www.google.com/')
driver.execute_script('window.print();')
【讨论】:
headless 模式下不起作用。知道为什么吗?
"account": ""添加到"recentDestinations"。
【讨论】:
render = '''this.render("test.pdf")'''这一行,这样我就可以使用变量名(列表)和计数器来渲染多个页面并相应地保存文件名。