在 chrome 中自动打印/保存网页为 pdf - python 2.7

Posted

技术标签:

【中文标题】在 chrome 中自动打印/保存网页为 pdf - python 2.7【英文标题】:Automate print/save web page as pdf in chrome - python 2.7 【发布时间】:2015-09-17 03:36:11 【问题描述】:

我正在尝试在 Chrome 中自动打印保存网页为 pdf。

我已经检查了 webbrowser 模块,但它似乎不是为此目的而设计的。

我探索了 wkhtmltopdf 作为替代方案,但下载文件时它似乎被病毒感染了。

感谢您的建议。

【问题讨论】:

Python + Selenium + PhantomJS render to PDF的可能重复 【参考方案1】:

这对我在 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();')

【讨论】:

不错的工作流程。你能指定路径并重命名创建的PDF吗? @tao.hong:不,我在下载目录里找到最新的PDF,然后移动/重命名。 同一脚本在headless 模式下不起作用。知道为什么吗? 无头打印,请关注:bugs.chromium.org/p/chromium/issues/detail?id=924981 使用最新版Chrome(78.0.3904.108),需要将"account": ""添加到"recentDestinations"【参考方案2】:

我找到了可能的解决方案。

代码将html文件保存为pdf,这是我的最终目标。

原帖是:

Python + Selenium + PhantomJS render to PDF

最好的。

【讨论】:

@MTuner,我想问你如何更改render = '''this.render("test.pdf")'''这一行,这样我就可以使用变量名(列表)和计数器来渲染多个页面并相应地保存文件名。 请在你的答案中写一些有用的东西——除了链接。这样,如果链接断开,答案就没有用了。

以上是关于在 chrome 中自动打印/保存网页为 pdf - python 2.7的主要内容,如果未能解决你的问题,请参考以下文章

怎么把网页上的东西打印成pdf

自动将网页打印为 pdf

怎么把网页保存为pdf文件

用Chrome网页获取PDF?

如何把网页或者WORD保存成PDF(没有打印机)

javascript 打印网页成pdf文件