当前位置:首页>python>用Python做一个简单的PDF生成器:从文本到PDF只需几行代码

用Python做一个简单的PDF生成器:从文本到PDF只需几行代码

  • 2026-09-09 00:33:59
用Python做一个简单的PDF生成器:从文本到PDF只需几行代码

在日常工作和学习中,我们经常需要将文本内容转换为PDF文件——无论是生成报告、保存笔记,还是制作电子书。手动复制粘贴到Word再另存为PDF,效率太低;用在线工具又担心隐私泄露。

今天,我就带大家用Python实现一个简单的PDF生成器,从纯文本文件一键生成排版整洁的PDF文档。全程代码不超过30行,新手也能轻松上手!

一、为什么用Python生成PDF?

Python在自动化办公领域有着天然的优势。用Python生成PDF,你可以:

  • 批量处理:一次性将成百上千个文本文件转为PDF

  • 自定义排版:自由控制字体、字号、页边距等样式

  • 集成到工作流:结合爬虫、数据分析等,自动生成报告

目前Python生态中有多个成熟的PDF生成库,其中最常用的是 ReportLab 和 fpdf2。

库特点适用场景
ReportLab功能强大,支持复杂排版、表格、图表专业报表、复杂文档
fpdf2轻量简洁,纯Python实现,上手快简单文档、收据、表单
WeasyPrint支持HTML/CSS转PDF已有网页模板的场景

对于“从文本生成PDF”这个需求,fpdf2 是最轻量、最易上手的选择。今天我们就用 fpdf2 来实现。

二、准备工作:安装fpdf2

首先,确保你的电脑上已经安装了Python(3.6以上版本)。然后在命令行中执行:

pip install fpdf2

一行命令搞定安装。

三、五分钟上手:生成你的第一个PDF

安装完成后,我们来写第一个示例:

from fpdf import FPDF# 创建PDF对象pdf = FPDF()# 添加一页pdf.add_page()# 设置字体pdf.set_font("helvetica", size=12)# 写入文本pdf.cell(text="Hello, World! 这是我的第一个PDF文件。")# 输出保存pdf.output("my_first_pdf.pdf")

运行这段代码,你会在当前目录下看到一个名为 my_first_pdf.pdf 的文件。

是不是超级简单?

四、实战:从TXT文件生成PDF

上面的例子只是写入了一行文本。实际工作中,我们通常需要读取一个完整的文本文件,然后生成排版美观的PDF。

下面是一个完整的实战代码:

from fpdf import FPDFdef txt_to_pdf(txt_path, pdf_path):    # 1. 创建PDF对象,使用A4纸尺寸    pdf = FPDF(orientation='P', unit='mm', format='A4')    pdf.add_page()    # 2. 设置字体(支持中文需要特殊处理,先用内置字体演示)    pdf.set_font("helvetica", size=12)    # 3. 读取文本文件    with open(txt_path, 'r', encoding='utf-8') as f:        content = f.read()    # 4. 将文本写入PDF(自动换行)    pdf.multi_cell(w=190, h=10, txt=content, align='L')    # 5. 保存PDF    pdf.output(pdf_path)    print(f"✅ PDF已生成:{pdf_path}")# 使用示例txt_to_pdf("我的笔记.txt", "我的笔记.pdf")

代码解析:

  • FPDF(orientation='P', unit='mm', format='A4'):创建一个纵向的A4纸PDF

  • add_page():添加一页

  • set_font("helvetica", size=12):设置字体为Helvetica,字号12

  • multi_cell(w=190, h=10, txt=content, align='L'):写入多行文本,宽度190mm,行高10mm,左对齐

  • output():保存PDF文件

multi_cell 会自动处理换行,当文本超过页面宽度时会自动换行,超过页面高度时会自动分页——非常适合处理长文本。

五、进阶:支持中文显示

上面的代码有一个局限——默认字体不支持中文,中文会显示为乱码。要解决这个问题,需要加载一个支持中文的字体文件。

from fpdf import FPDFclass ChinesePDF(FPDF):    def __init__(self):        super().__init__()        # 注册中文字体(需要提前下载字体文件,如 simsun.ttc)        self.add_font('simsun', '', 'simsun.ttc', uni=True)        self.set_font('simsun', size=12)def txt_to_pdf_cn(txt_path, pdf_path):    pdf = ChinesePDF()    pdf.add_page()    with open(txt_path, 'r', encoding='utf-8') as f:        content = f.read()    pdf.multi_cell(w=190, h=10, txt=content, align='L')    pdf.output(pdf_path)    print(f"✅ PDF已生成:{pdf_path}")txt_to_pdf_cn("中文笔记.txt", "中文笔记.pdf")

小提示:你需要提前下载一个中文字体文件(如 simsun.ttc 或 msyh.ttf)放在项目目录下。也可以使用开源的“思源宋体”等字体。

fpdf2 对 Unicode 的支持非常完善,支持中文、日文、韩文等几乎任何语言的字符。

六、添加更多样式

想让PDF更美观?可以轻松添加标题、页眉页脚等:

from fpdf import FPDFclass StyledPDF(FPDF):    def header(self):        # 页眉        self.set_font("helvetica", "B", 15)        self.cell(w=0, h=10, txt="我的文档", border=0, ln=1, align="C")        self.ln(10)    def footer(self):        # 页脚(页码)        self.set_y(-15)        self.set_font("helvetica", "I", 8)        self.cell(w=0, h=10, txt=f"第 {self.page_no()} 页", align="C")pdf = StyledPDF()pdf.add_page()pdf.set_font("helvetica", size=12)pdf.multi_cell(w=190, h=10, txt="这是文档正文内容……", align='L')pdf.output("styled_document.pdf")

这样生成的PDF就有了自动的页眉和页码,看起来专业多了。

七、总结

今天我们学习了:

  1. fpdf2 是Python中最轻量易用的PDF生成库之一

  2. 只需 4行核心代码 就能生成一个PDF文件

  3. 从TXT文件生成PDF,用 multi_cell 自动处理换行和分页

  4. 通过注册中文字体,解决中文显示问题

  5. 重写 header() 和 footer() 方法添加页眉页脚

掌握了这些技能,你可以轻松实现:

  • 📄 批量将文本笔记转为PDF电子书

  • 📊 自动生成数据报告

  • 📧 将邮件内容存档为PDF

整个代码不到30行,却解决了一个非常实用的办公场景。这就是Python的魅力——用简单的代码,解决真实的问题。

如果你觉得这篇文章对你有帮助,欢迎点赞、在看、转发,让更多朋友学会这个实用技巧!

最新文章

随机文章