如何在FPDF中居中图片?当前设置引发拉伸或偏移问题
解决FPDF页眉图片居中且不拉伸的问题
要同时实现图片居中、不拉伸,核心是动态计算居中坐标+保持图片原始宽高比,修改代码如下:
修改后的页眉代码
def header(self): """ Create header for pdf file. """ self.set_left_margin(0) self.set_fill_color(242, 242, 242) self.add_font('DejaVuSerif', '', font_path, uni=True) self.set_font('DejaVuSerif', size=14) self.cell(0, 18, '', 0, 0, 'C', True) self.ln(1) # 配置图片显示参数 target_logo_width = 65 # 自定义想要的图片宽度 page_width = self.w # 获取当前PDF页面宽度 # 计算水平居中的X坐标:页面宽度减去图片宽度后,取一半作为左侧偏移 center_x = (page_width - target_logo_width) / 2 # 插入图片:只设置宽度,高度自动按原始比例适配,避免拉伸 self.image(name=logo_url, x=center_x, w=target_logo_width) self.ln(5)
关键说明
- 避免拉伸:只指定
w(宽度)参数,不设置h(或设为0),FPDF会自动根据图片原始宽高比计算对应高度,保证图片不变形。如果想固定高度,同理只设置h,去掉w即可。 - 精准居中:通过
(页面宽度 - 图片宽度)/2计算X坐标,替代硬编码的x=70,适配不同页面尺寸或图片大小,彻底解决居中问题。 - 动态适配:用
self.w获取当前页面宽度,无需硬编码A4默认的210mm,兼容自定义页面尺寸场景。
内容的提问来源于stack exchange,提问作者Daniyal Farman
相关产品推荐
相关产品推荐

