8

I am trying to automate Print Save Web Page as pdf in chrome.

I have checked the webbrowser module, but it does not seem to be intended for this purpose.

I explored wkhtmltopdf as an alternative but when downloading the file it seems to be infected by a virus.

Thank you for the suggestions.

Diego
  • 637
  • 3
  • 10
  • 24
  • Possible duplicate of [Python + Selenium + PhantomJS render to PDF](https://stackoverflow.com/questions/16927090/python-selenium-phantomjs-render-to-pdf) – Martin Thoma Sep 08 '17 at 10:58

2 Answers2

9

This worked for me using Chrome 62.0.3202.94, ChromeDriver 2.33.506120, Selenium 3.4.3, and Python 2.7.14 or 3.6.3, on Windows 7 x64:

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();')
Ross Smith II
  • 11,799
  • 1
  • 38
  • 43
2

I was able to find a possible solution.

The code saves an html file to pdf which is my ultimate goal.

The original post is:

Python + Selenium + PhantomJS render to PDF

Best.

Community
  • 1
  • 1
Diego
  • 637
  • 3
  • 10
  • 24
  • @MTuner, I would like to ask you about how to alter the line `render = '''this.render("test.pdf")'''`so I can render several pages using a variable name (list) and a counter and saving the file names accordingly. – Diego Jul 01 '15 at 18:32
  • 1
    Please write something useful - besides the link - in your answer. So that if the link breaks the answer is not useless. – Martin Thoma Sep 08 '17 at 10:58