PyFPDF技术问题:如何让cell与multi_cell在同一行对齐?
解决PyFPDF中cell与multi_cell同一行对齐的问题
你的代码问题出在multi_cell使用了new_x=XPos.LMARGIN, new_y=YPos.NEXT参数,这会强制光标跳转到下一行左侧,导致后续cell全部错位到下一行。以下是修复后的代码:
y_pos = self.get_y() # 记录当前行的垂直位置 x_pos = self.get_x() for i, col in enumerate(row): if i == 0: # 绘制多行单元格,不指定new_x/new_y,默认光标会到下一行开头 self.multi_cell(col_widths[i], 6, col, 1, align=alignments[i], fill=True) # 手动将光标移回当前行的右侧,准备绘制下一个cell self.set_xy(x_pos + col_widths[i], y_pos) else: # 绘制单行单元格,光标自动移到右侧 self.cell(col_widths[i], 6, col, 1, align=alignments[i], fill=True) x_pos += col_widths[i] # 最后将光标重置到下一行开头,不影响后续内容 self.set_xy(self.l_margin, y_pos + 6)
关键逻辑说明
- 记录行位置:用
get_y()保存当前行的Y坐标,避免multi_cell自动换行后丢失原行位置 - 手动定位光标:
multi_cell绘制完成后,通过set_xy将光标移回原行的右侧位置,确保后续cell在同一行输出 - 重置光标:循环结束后将光标移到下一行开头,保证后续内容正常排版
内容的提问来源于stack exchange,提问作者Pypax
相关产品推荐
相关产品推荐

