Opera提供了将网页另存为PDF文件的选项。如果连接到网页并右键单击它,则可以使用“另存为PDF”选项,该选项可将网页另存为PDF文件。我想在Selenium的Python绑定(和Operadriver)中访问此选项。
我能够整理一个脚本来打开网页并打印(通过发送window.print()
Javascript命令)。通过在Kiosk模式下运行Opera,可以避免出现“打印”对话框,但仍会显示“另存为”对话框,询问生成的PDF文件的文件名。
因此,我希望该解决方案跳过“另存为”对话框,而是从Python指定PDF文件的名称。这样,所有操作将实现自动化,并且不需要用户交互。
另一种解决方案是直接访问“另存为PDF”选项,而无需通过“打印”屏幕,但是我不知道该怎么做。
这是我的MWE(第一个选项-打印到PDF文件):
from selenium import webdriver
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities
import json
path_to_operadriver = r"C:\Users\RMANCUSO00\Documents\programmi\operadriver.exe"
opera_path = r"C:\Users\RMANCUSO00\AppData\Local\Programs\Opera\launcher.exe"
appState = {
"recentDestinations": [
{
"id": "Save as PDF",
"origin": "local"
}
],
"selectedDestinationId": "Save as PDF",
"version": 2
}
downloadPath = "./"
profile = {'printing.print_preview_sticky_settings.appState':json.dumps(appState),
'savefile.default_directory':downloadPath}
chrome_options = webdriver.ChromeOptions()
chrome_options.add_experimental_option('prefs', profile)
chrome_options.add_argument('--kiosk-printing')
chrome_options.binary_location = opera_path
driver = webdriver.opera.webdriver.OperaDriver(executable_path=path_to_operadriver,
opera_options=chrome_options)
driver.implicitly_wait(30)
url="http://www.feynmanlectures.caltech.edu/III_20.html"
driver.get(url)
driver.execute_script('window.print();')