Печать PDF из селена с хромедрайвером - PullRequest
0 голосов
/ 24 января 2020

Я пытаюсь реализовать печать содержимого html / css в формате PDF с помощью Selenium, chromedriver и python.

Я могу печатать с кодом ниже, но не могу изменить настройки печати. Я хотел бы печатать в формате Letter и без верхнего / нижнего колонтитула. Официальная информация chromedriver или Selenium мне мало что говорит, поэтому у меня проблемы. Кто-нибудь знает, как можно изменить настройки печати или никогда этого не сделать.

import json
import os
from selenium import webdriver

# setting html path
htmlPath = os.getcwd() + "\\sample.html"
addr = "file:///" + htmlPath

# setting Chrome Driver
chromeOpt = webdriver.ChromeOptions()
appState = {
   "recentDestinations": [
        {
            "id": "Save as PDF",
            "origin": "local",
            "account": ""
        }
    ],
    "selectedDestinationId": "Save as PDF",
    "version": 2
}
prefs = {
    'printing.print_preview_sticky_settings.appState': json.dumps(appState)}
chromeOpt.add_experimental_option('prefs', prefs)
chromeOpt.add_argument('--kiosk-printing')
driver = webdriver.Chrome('.\\bin\\chromedriver', options=chromeOpt)

# HTML open and print
driver.get(addr)
driver.execute_script('return window.print()')

1 Ответ

0 голосов
/ 25 января 2020

Добавьте - без головы и попробуйте это так:

pdf = driver.execute_cdp_cmd("Page.printToPDF", {
  "printBackground": True
})

import base64

with open("file.pdf", "wb") as f:
  f.write(base64.b64decode(pdf['data']))

Вот некоторые опции, которые вы можете поиграть с

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...