我正在寻找能力渲染pdf与PhantomJSvia GhostDriver,而不仅仅是渲染pdf.当我使用下一个代码,然后正常加载页面:
from selenium import webdriver
driver = webdriver.PhantomJS('./node_modules/phantomjs/bin/phantomjs')
driver.set_window_size(1024, 768)
driver.get('http://stackoverflow.com')
Run Code Online (Sandbox Code Playgroud)
当我通过命令行https://github.com/ariya/phantomjs/blob/master/examples/rasterize.js使用下一个脚本时,pdf生成完美.
现在我想要执行脚本像rasterize.js(page.render('file.pdf'))但通过webdriver.webdriver有execute_script方法,但它看起来像PhantomJS代码评估,并且无权访问webpage实例上下文.也webdriver有get_screenshot_as_base64方法,但它只返回png.
我使用的最新版本selenium,phantomjs,nodejs.
所以我的问题是如何PhantomJS通过GhostDriver和评估render方法访问网页实例?
我正在尝试在 chrome 中自动打印保存网页为 pdf。
我已经检查了 webbrowser 模块,但它似乎不是用于此目的。
我探索了 wkhtmltopdf 作为替代方案,但在下载文件时,它似乎被病毒感染了。
感谢您的建议。
有没有办法从python + selenium 调用chromedriver的Page.printToPDF()方法?
PhantomJS有一个类似的render()方法可以直接保存到pdf,这只能从phantomjs的特权客户端REPL获得. 这个SO答案显示了如何使用自定义phantomjs webdriver命令(/session/$sessionId/phantom/execute)调用正在运行的selenium驱动程序来调用它this.render().
是否有类似的东西可以为chromedriver做?像phantomjs的execute命令,允许调用devtools方法; 或者printToPDF通过自定义驱动程序命令直接调用的方法?
(注意:我正在尝试渲染html,这是POST的结果,所以像wkhtmltopdf这样的替代解决方案将无法工作.我可以回到使用selenium的屏幕截图 - > png,但这对于存储来说很麻烦).