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

如何用FPDF库生成与原文本格式一致的PDF文件?

解决FPDF生成PDF时文本换行及保留原格式的问题

你的问题出在使用了pdf.text()方法——这个方法是绝对定位的单行输出,既不会识别文本里的换行符,也不会自动换行过长的内容,所以所有文本挤成一行,还可能因为坐标(0,0)出界导致显示不全。

要实现和原文本格式一致的PDF,改用pdf.multi_cell()方法即可,它会自动处理换行符,还能根据指定宽度自动换行。具体修改步骤如下:

  1. 正确读取文本文件:确保读取时保留原文本的换行符(用普通的read()方法就行)
  2. 替换text()为multi_cell():设置合适的宽度、行高,传入文本内容
  3. 调整起始位置:避免内容出界,比如从页面顶部往下10单位的位置开始输出

修改后的完整代码示例:

from fpdf import FPDF

# 读取文本文件内容,保留换行符
with open("你的文本文件名.txt", "r", encoding="utf-8") as f:
    text = f.read()

pdf = FPDF()
pdf.add_page()
pdf.set_font('Arial', 'B', 14)

# 使用multi_cell输出:宽度0表示占满页面可用宽度,行高设为10(可根据字体大小调整)
# 起始位置x默认是当前位置,y设为10避免顶到页面边缘
pdf.multi_cell(0, 10, text)

pdf.output("输出文件名.pdf", "F")

关键说明:

  • multi_cell(w, h, txt)参数:
    • w=0:自动适配页面宽度(减去左右边距),超出宽度的内容会自动换行
    • h=10:每行的高度,建议设为字体大小的1.2-1.5倍,保证行间距舒适
    • txt:要输出的文本,里面的\n会被识别为换行,完美保留原文本的行结构
  • 如果你需要自定义起始位置,可以用pdf.set_xy(x, y)来设置,比如pdf.set_xy(10, 10)表示从页面左边10、顶部10的位置开始输出

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 13:32:34