Отсутствие элементов при использовании селена Chrome драйвера для автоматического "Сохранить как PDF"
Я пытаюсь автоматически сохранить файл PDF, созданный с помощью pdftohtmlEX
(https://github.com/coolwanglu/pdf2htmlEX), с помощью веб-драйвера selenium (chrome).
Это почти работает, за исключением подписей к цифрам, а иногда даже часть рисунков отсутствует.
Сохранено вручную:
Автоматически сохраняется с использованием селена и веб-драйвера Chrome:
Вот мой код (вам нужен Chromium WebDriver (http://chromedriver.chromium.org/downloads) в той же папке, что и этот скрипт):
import json
from selenium import webdriver
# print settings: save as pdf, 'letter' formatting
appState = """{
"recentDestinations": [
{
"id": "Save as PDF",
"origin": "local"
}
],
"mediaSize": {
"height_microns": 279400,
"name": "NA_LETTER",
"width_microns": 215900,
"custom_display_name": "Letter"
},
"selectedDestinationId": "Save as PDF",
"version": 2
}"""
appState = json.loads(appState)
profile = {"printing.print_preview_sticky_settings.appState": json.dumps(appState)}
chrome_options = webdriver.ChromeOptions()
chrome_options.add_experimental_option('prefs', profile)
# Enable automatically pressing the print button in print preview
# https://peter.sh/experiments/chromium-command-line-switches/
chrome_options.add_argument('--kiosk-printing')
driver = webdriver.Chrome('./chromedriver', options=chrome_options)
driver.get('http://www.deeplearningbook.org/contents/intro.html')
driver.execute_script('window.print();')
driver.quit()
Иногда, когда я вручную печатаю это тоже случается. Но если я затем изменю любой из параметров печати, предварительный просмотр перезагрузится, и заголовки изображений снова будут там и останутся там, независимо от того, какие параметры я в дальнейшем включу/отключу.
Что я пробовал до сих пор:
Ответы
Ответ 1
Так что, повозившись, я случайно нашел решение. Я не очень понимаю, почему, но включение "Режим PrintBrowser" ("Включает режим PrintBrowser, в котором все отображается так, как будто напечатано.") Решает проблему. Это может или может иметь отношение к загрузке CSS должным образом.
Мне просто нужно добавить chrome_options.add_argument('--enable-print-browser')
и все элементы есть!