You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Selenium实现Firefox网页的简化打印格式PDF导出?

问题:Firefox通过Selenium导出网页简化格式PDF失败

尝试使用Selenium在Firefox中访问链接并导出简化格式的PDF,但当前代码只能导出原始格式PDF,设置print.use_simplify_page后无效果。手动操作时可通过Firefox打印选项选择“简化”格式实现需求。

当前可导出原始格式PDF的代码:

from time import sleep

from helium import start_firefox
from selenium.webdriver import FirefoxOptions

options = FirefoxOptions()
options.add_argument("--start-maximized")
options.set_preference("print.always_print_silent", True)
options.set_preference("print.printer_Mozilla_Save_to_PDF.print_to_file", True)
options.set_preference("print_printer", "Mozilla Save to PDF")
options.set_preference("print.use_simplify_page", True) # 此设置未生效

driver = start_firefox("https://www.hsph.harvard.edu/nutritionsource/selenium/", options=options, headless = True)

driver.execute_script("window.print();")
sleep(10)  # 需等待渲染,否则文件损坏

driver.quit()
解决方案

Firefox的print.use_simplify_page偏好设置仅对手动触发的打印对话框生效,通过window.print()调用时不会自动启用简化模式。可通过以下两种方式实现需求:

方法1:通过JavaScript指定打印配置

直接调用Firefox的打印API,强制启用简化页面选项:

from time import sleep

from helium import start_firefox
from selenium.webdriver import FirefoxOptions

options = FirefoxOptions()
options.add_argument("--start-maximized")
options.set_preference("print.always_print_silent", True)
options.set_preference("print.printer_Mozilla_Save_to_PDF.print_to_file", True)
options.set_preference("print_printer", "Mozilla Save to PDF")

driver = start_firefox("https://www.hsph.harvard.edu/nutritionsource/selenium/", options=options, headless = True)

# 用JS配置打印参数,启用简化模式
driver.execute_script("""
    const printOptions = {
        isSimplified: true,
        silent: true,
        destination: 'saveas',
        filename: 'selenium_simplified.pdf'
    };
    window.print(printOptions);
""")

sleep(10)
driver.quit()

方法2:设置默认打印配置

如果需要批量处理所有链接,可配置Firefox默认打印模式为简化格式:

from time import sleep

from helium import start_firefox
from selenium.webdriver import FirefoxOptions

options = FirefoxOptions()
options.add_argument("--start-maximized")
options.set_preference("print.always_print_silent", True)
options.set_preference("print.printer_Mozilla_Save_to_PDF.print_to_file", True)
options.set_preference("print_printer", "Mozilla Save to PDF")
# 设置默认打印配置为简化模式
options.set_preference("print.default_print_config", "{\"isSimplified\":true}")

driver = start_firefox("https://www.hsph.harvard.edu/nutritionsource/selenium/", options=options, headless = True)

driver.execute_script("window.print();")
sleep(10)
driver.quit()

说明

  • 方法1灵活性更高,可针对单个打印任务自定义参数;
  • 方法2适合批量处理场景,所有打印任务默认使用简化格式;
  • 确保使用Firefox较新稳定版,旧版本可能不支持isSimplified参数。

内容的提问来源于stack exchange,提问作者Shreyas Rajesh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.31 03:18:24