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

FPDF生成带页眉页脚背景色PDF:页脚被遮挡问题求助

解决方案:让FPDF的页眉、页脚与背景色共存

问题原因

调用add_page()时,PDF类会先执行header()绘制页眉,之后手动调用rect()绘制的背景矩形会覆盖在页眉上方,导致页眉被遮挡;而页脚是在页面所有内容绘制完成后才触发渲染的,因此不会被背景遮挡。

解决方法

调整绘制顺序,让背景先被渲染,再绘制页眉内容,确保页眉叠加在背景之上。只需将背景绘制的逻辑移到header()方法的最开头即可。

修改后的代码

from fpdf import FPDF

class PDF(FPDF):
    def header(self):
        # 先绘制页面背景(置于底层)
        self.set_fill_color(r=249, g=247, b=242)
        self.rect(h=self.h, w=self.w, x=0, y=0, style="F")
        # 再绘制页眉内容(叠加在背景上)
        self.set_font(family='Helvetica', size=8)
        self.cell(0, 10, 'test_header', align='L')

    def footer(self):
        self.set_y(-15)
        self.set_font(family='Helvetica', size=8)
        self.cell(0, 10, 'test_footer', align='L')

pdf = PDF()
pdf.add_page()
pdf.set_font("Times", size=12)
# 此处无需再单独绘制背景

原理说明

  • 背景先被绘制在页面最底层,之后的页眉内容会叠加在背景之上
  • 页脚本身就在所有页面内容绘制完成后执行渲染,自然会处于背景之上
  • 这样就能实现页眉、页脚与背景色同时正常显示的效果

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 10:24:54