我有一个使用 Python、Selenium 和 Chrome Webdriver 将网页保存为 PDF 的工作脚本。但是,我需要将它们保存在合法尺寸的文档(216 x 356 毫米)上,而我当前的脚本仅保存信纸尺寸(216 x 279 毫米)的文件。
这是我目前拥有的代码:
# Attach printing options to webdriver
app_state = {
"recentDestinations": [
{
"id": "Save as PDF",
"origin": "local",
"account": ""
}
],
"selectedDestinationId": "Save as PDF",
"isCssBackgroundEnabled": True,
"isHeaderFooterEnabled": False,
"isLandscapeEnabled": True,
"version": 2
}
prefs = {
'printing.print_preview_sticky_settings.appState': json.dumps(app_state)
}
chrome_options = webdriver.ChromeOptions()
chrome_options.add_experimental_option('prefs', prefs)
chrome_options.add_argument('--kiosk-printing')
driver = webdriver.Chrome(options=chrome_options)
有没有办法使用法定尺寸保存文档(或以任何方式更改纸张尺寸)?
我一直在寻找其他首选项和选项来更改纸张设置和/或尺寸,但根本没有任何运气。
谢谢!
如果你添加
"mediaSize": {"height_microns": 355600, "width_microns": 215900}
在 appState 字典中,您应该将纸张大小设置为合法。
如果您想更改为任何其他尺寸(在列表中),您可以通过谷歌搜索尺寸并转换为微米,或者检查允许您选择纸张尺寸的下拉列表,然后在选项,然后复制/粘贴值。
要使此解决方案发挥作用,这些值必须与下拉列表中的值完全匹配,否则它将不会选择并默认为 Letter。
appState = {
"recentDestinations": [
{
"id": "Save as PDF",
"origin": "local",
"account": ""
}
],
"selectedDestinationId": "Save as PDF",
"version": 2,
"mediaSize": {"height_microns":841000,"imageable_area_bottom_microns":0,
"imageable_area_left_microns":0,"imageable_area_right_microns":594000,
"imageable_area_top_microns":841000,"name":"ISO_A1",
"width_microns":594000,"custom_display_name":"A1"}
}
prefs = {'printing.print_preview_sticky_settings.appState': json.dumps(appState), "savefile.default_directory": folderpath}
chrome_options = webdriver.ChromeOptions()
chrome_options.add_experimental_option('prefs', prefs)
chrome_options.add_argument('--kiosk-printing')
driver = webdriver.Chrome(options=chrome_options)
driver.get(url)
time.sleep(3)
driver.execute_script('window.print();')
time.sleep(5)
driver.quit()
您可以在此处更改检查您的纸张尺寸:在此处输入图像描述