如何使用 Python 和 Selenium 将文档另存为合法大小的 PDF

问题描述 投票:0回答:2

我有一个使用 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)

有没有办法使用法定尺寸保存文档(或以任何方式更改纸张尺寸)?

我一直在寻找其他首选项和选项来更改纸张设置和/或尺寸,但根本没有任何运气。

谢谢!

python selenium google-chrome pdf selenium-chromedriver
2个回答
0
投票

如果你添加

"mediaSize": {"height_microns": 355600, "width_microns": 215900}

在 appState 字典中,您应该将纸张大小设置为合法。

如果您想更改为任何其他尺寸(在列表中),您可以通过谷歌搜索尺寸并转换为微米,或者检查允许您选择纸张尺寸的下拉列表,然后在选项,然后复制/粘贴值。

要使此解决方案发挥作用,这些值必须与下拉列表中的值完全匹配,否则它将不会选择并默认为 Letter。


0
投票

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()

您可以在此处更改检查您的纸张尺寸:
在此处输入图像描述

© www.soinside.com 2019 - 2024. All rights reserved.