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

Playwright(Python)生成PDF时页脚模板变量未解析问题求助

Playwright Python PDF自定义页脚变量未替换问题排查与解决

核心问题:模板语法误用

你遇到的问题本质是混淆了其他工具的模板语法——Playwright的PDF页眉页脚变量不是通过{{pageNumber}}这种双大括号语法注入,而是通过带有特定类名的HTML标签来识别替换的。

具体解决步骤

  1. 替换正确的变量标签
    把你写的{{pageNumber}}和{{totalPages}}替换为带指定class的<span>标签:

    • 当前页码:<span class="pageNumber"></span>
    • 总页码:<span class="totalPages"></span>

    错误写法:

    footer_template = "Page {{pageNumber}} of {{totalPages}}"
    

    正确写法:

    footer_template = """<div style="width: 100%; font-size: 12px; text-align: center;">
        Page <span class="pageNumber"></span> of <span class="totalPages"></span>
    </div>"""
    
  2. 必须开启页眉页脚显示开关
    调用page.pdf()时,必须设置display_header_footer=True,否则自定义模板完全不会生效,变量自然无法被注入:

    pdf_bytes = page.pdf(
        path="output.pdf",
        display_header_footer=True,  # 关键开关,不能省略
        footer_template="""<div style="width: 100%; font-size: 12px; text-align: center;">
            Page <span class="pageNumber"></span> of <span class="totalPages"></span>
        </div>""",
        margin={"bottom": "25px"}  # 预留足够底部边距,避免页脚被内容遮挡
    )
    
  3. 确保HTML模板结构合法
    模板必须是有效的HTML片段,建议用<div>包裹所有内容,避免纯文本加标签的写法,否则Playwright可能无法正确解析变量。

完整可运行示例

from playwright.sync_api import sync_playwright

with sync_playwright() as p:
    browser = p.chromium.launch()
    page = browser.new_page()
    page.goto("https://example.com")
    # 生成带自定义页脚的PDF
    page.pdf(
        path="example_with_footer.pdf",
        display_header_footer=True,
        footer_template="""<div style="font-size: 10px; text-align: center; width: 100%;">
            Page <span class="pageNumber"></span> of <span class="totalPages"></span>
        </div>""",
        margin={"top": "20px", "bottom": "20px"}
    )
    browser.close()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 03:12:05