讲师中心 微信公众号
AI工具推荐 视频效率加速

PythonPDF处理教程_PyPDF2与PDF生成实战解析

星丽小哥_6834

星丽小哥_6834

发布时间:2026-01-04 08:53:15

|

1067人浏览过

|

来源于php中文网

原创

PyPDF2适用于PDF读取、合并、拆分、加解密等操作,但无法生成新PDF;生成PDF应选FPDF2(轻量中文友好)或ReportLab(专业复杂报表)。

pythonpdf处理教程_pypdf2与pdf生成实战解析

PyPDF2 是处理 PDF 文件最常用的 Python 库之一,适合合并、拆分、提取文本、加密解密等常见操作;但要注意它不支持生成新 PDF,只读取和修改已有 PDF。真正生成 PDF 推荐用 ReportLabFPDF2(轻量、纯 Python、中文友好)。

PyPDF2 的核心用途与典型操作

PyPDF2 主要用于解析和编辑现有 PDF,不是万能 PDF 工具,别指望它画表格或写中文标题——字体和布局支持很弱。

  • 读取文本:用 PdfReader 打开文件,逐页调用 page.extract_text();注意扫描版 PDF(图片型)无法提取文字,需先 OCR
  • 合并 PDF:创建 PdfWriter,用 append() 添加多个 PdfReader 对象,最后 write() 保存
  • 拆分与提取页面:用 writer.add_page(reader.pages[i]) 指定页码复制,支持切片(如 reader.pages[0:3]
  • 加密/解密:支持用户密码(打开限制)和所有者密码(编辑限制),但 AES-256 等强加密可能不兼容旧版本

生成 PDF:为什么不用 PyPDF2?

PyPDF2 没有绘图上下文,不能新建页面、写文字、画线或插入图片。强行“生成”只能靠复制空白模板再填内容,非常受限且难控制排版。

html-ppt-to-pdf
html-ppt-to-pdf

将使用 `

` 约定的 HTML 幻灯片转换为高保真、矢量文本 PDF(使用 Playwright + Chromium 原生 PDF 功能)。

下载
  • 需要从零生成带格式的 PDF → 选 FPDF2(pip install fpdf2),支持 UTF-8 中文、自动换行、简单表格、PNG/JPEG 插入
  • 需要复杂报表、图表、页眉页脚、样式模板 → 选 ReportLab(学习曲线略陡,但专业性强)
  • 临时快速导出结构化数据(如列表、字典)→ 可先转 HTML 再用 pdfkit(基于 wkhtmltopdf)生成,适合简单场景

中文字体支持实战要点

默认 PDF 不含中文字体,直接写中文会显示为空白或方框。FPDF2 解决方案最直接:

立即学习Python免费学习笔记(深入)”;

  • 下载一个 TTF 中文字体(如 NotoSansCJKsc-Regular.ttf 或思源黑体)
  • add_font() 注册字体:pdf.add_font("Noto", fname="NotoSansCJKsc-Regular.ttf", uni=True)
  • 设置字体:pdf.set_font("Noto", size=12),之后 cell()multi_cell() 就能正常显示中文
  • ReportLab 需手动注册 pdfmetrics.registerFont() 并使用 ParagraphStyle 指定字体名

常见坑与绕过建议

实际项目中容易卡在几个地方,提前知道能省半天调试时间:

  • PyPDF2 读取某些 PDF 报 NotImplementedError: only algorithm code 1 and 2 are supported → 是用了新版加密(如 AES),换 pymupdf(fitz)更鲁棒
  • 提取文本乱码或缺失 → 检查是否是扫描件;或 PDF 内文字被转成路径(矢量图形),此时 PyPDF2 无法还原
  • FPDF2 生成 PDF 后中文标点错位 → 关闭自动 kerning:pdf.set_auto_kerning(False)
  • 合并后文件体积暴增 → PyPDF2 默认不压缩对象,可用 writer.add_blank_page() 后再删页来间接清理冗余流,或改用 pypdf(PyPDF2 的现代维护分支,支持 compress_content_streams()

热门AI工具

更多
SkildArt
SkildArt Hot

SkildArt是一款AI文本写作工具,一站式 AI 视觉创作平台。

火山引擎

火山引擎是一款面向企业的云计算与AI服务平台。

WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

Atoms
Atoms Hot

Atoms是一款AI智能体工具,第一支自动构建真实业务的 AI 团队。

二狗PPT
二狗PPT Hot

一款AI演示文稿工具,主要用于专为中式职场打造的AI PPT生成工具,适合需要提升相关任务效率的用户。

DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

切问学术

切问学术是一款AI论文写作工具,复旦大学NLP团队推出的AI学术智能体。

UpDream
UpDream Hot

一款AI视频创作工具,主要用于哔哩哔哩推出的自研AI视频创作工具,适合需要提升相关任务效率的用户。

相关专题

更多
pip安装使用方法
pip安装使用方法

安装步骤:1、确保Python已经正确安装在您的计算机上;2、下载“get-pip.py”脚本;3、按下Win + R键,然后输入cmd并按下Enter键来打开命令行窗口;4、在命令行窗口中,使用cd命令切换到“get-pip.py”所在的目录;5、执行安装命令;6、验证安装结果即可。大家可以访问本专题下的文章,了解pip安装使用方法的更多内容。

2410

2023.10.09

更新pip版本
更新pip版本

更新pip版本方法有使用pip自身更新、使用操作系统自带的包管理工具、使用python包管理工具、手动安装最新版本。想了解更多相关的内容,请阅读专题下面的文章。

5563

2024.12.20

pip设置清华源
pip设置清华源

设置方法:1、打开终端或命令提示符窗口;2、运行“touch ~/.pip/pip.conf”命令创建一个名为pip的配置文件;3、打开pip.conf文件,然后添加“[global];index-url = https://pypi.tuna.tsinghua.edu.cn/simple”内容,这将把pip的镜像源设置为清华大学的镜像源;4、保存并关闭文件即可。

7082

2024.12.23

python升级pip
python升级pip

本专题整合了python升级pip相关教程,阅读下面的文章了解更多详细内容。

3387

2025.07.23

go语言 数组和切片
go语言 数组和切片

本专题整合了go语言数组和切片的区别与含义,阅读专题下面的文章了解更多详细内容。

1392

2025.09.03

append用法
append用法

append是一个常用的命令行工具,用于将一个文件的内容追加到另一个文件的末尾。想了解更多append用法相关内容,可以阅读本专题下面的文章。

578

2023.10.25

python中append的用法
python中append的用法

在Python中,append()是列表对象的一个方法,用于向列表末尾添加一个元素。想了解更多append的更多内容,可以阅读本专题下面的文章。

1476

2023.11.14

python中append的含义
python中append的含义

本专题整合了python中append的相关内容,阅读专题下面的文章了解更多详细内容。

1984

2025.09.12

Buffalo框架数据库开发全教程
Buffalo框架数据库开发全教程

本专题围绕Buffalo框架数据库开发,讲解database.yml多环境配置、soda与fizz迁移生成回滚、模型结构体标签、增删改查与条件查询、一对多与多对多关联、数据校验、回调钩子、事务处理及原生SQL执行能力。

0

2026.09.23

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn