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

Selenium 4搭配geckodriver实现HTML5网页自定义尺寸转PDF的方案咨询

Firefox(geckodriver)自定义页面尺寸网页转PDF实现方案

前置要求

  • 依赖版本要求:Firefox ≥ 112、geckodriver ≥ 0.32.0,低于该版本不兼容CDP打印相关接口
  • 必须开启Firefox无头模式,否则PDF生成功能无法生效

等效实现代码

import base64
from selenium import webdriver
from selenium.webdriver.firefox.options import Options

def save_as_pdf(driver, path, options={}):
    # Selenium 4内置CDP调用方法,自动兼容不同浏览器的底层接口差异
    result = driver.execute_cdp_cmd("Page.printToPDF", options)
    if result:
        with open(path, 'wb') as f:
            f.write(base64.b64decode(result['data']))
        return True
    return False

# 初始化Firefox配置
firefox_options = Options()
# 必须开启无头模式
firefox_options.add_argument("--headless")

# 初始化驱动:Selenium 4.6+版本支持自动管理驱动,可省略executable_path参数
driver = webdriver.Firefox(
    executable_path='/usr/local/bin/geckodriver',
    options=firefox_options
)

# 访问目标页面
driver.get('https://example.my')

# 模拟screen媒体类型,和Chrome端配置逻辑一致
driver.execute_cdp_cmd("Emulation.setEmulatedMedia", {'media': 'screen'})

# PDF参数可直接复用原有Chrome端的配置,paperHeight、paperWidth单位均为英寸
pdf_options = {
    'paperHeight': 92,
    'paperWidth': 8,
    'printBackground': True
}
save_as_pdf(driver, 'myfilename.pdf', pdf_options)

# 退出驱动释放资源
driver.quit()

注意事项

  • 如果你希望保持和原有Chrome版完全一致的手工封装请求的写法,只需将send_devtools方法中的资源路径修改为/session/%s/moz/cdp/send_command即可,其余逻辑无需变动
  • 如遇到背景色/背景图无法打印的问题,升级Firefox到最新稳定版即可解决

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 05:42:03