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

使用Python的FPDF库将TXT转换为PDF时如何保留原有格式

解决方案

你的排版错乱核心是三个问题:用了非等宽字体、未配置文本左对齐规则、未处理空白字符保留逻辑,按下面方案修改即可:

  • 第一步:切换为等宽字体,必须保证每个字符占位宽度完全一致,才能对齐txt里用空格拼接出来的表格
  • 第二步:读取txt文件时指定编码避免乱码,同时将制表符替换为固定数量空格(一般1个制表符替换为4/8个空格,可匹配你原txt的制表符宽度调整)
  • 第三步:调用cell方法时显式指定左对齐,避免默认对齐规则打乱排版
  • 第四步:调整行高匹配字体大小,避免行间距错位

修改后的可运行代码如下:

from fpdf import FPDF

pdf = FPDF()   
pdf.add_page()
# 切换为内置等宽字体Courier,字号可根据原txt显示需求调整
pdf.set_font("Courier", size = 10)
# 读取文件时指定编码避免乱码
with open("Test", "r", encoding="utf-8") as f:
    for line in f:
        # 替换制表符为8个空格,可根据你原txt的制表符宽度调整数值
        processed_line = line.expandtabs(8)
        # 显式指定左对齐(align参数设为'L')
        pdf.cell(0, 5, txt=processed_line, ln=1, align='L')
filename='/Users/Test.pdf'
pdf.output(filename, 'F')

如果默认Courier字体还是不符合需求,可以自行加载外部等宽字体(比如Consolas、思源等宽)到FPDF中,确保字符宽度完全统一即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 18:06:00