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
相关产品推荐
相关产品推荐

