当前位置: 首页 > news >正文

Python自学20 - Python操作PDF文件

Python自学20 - Python操作PDF文件

在自动化办公和数据处理场景中,PDF 是一种常见的文档格式。Python 提供了多种库来操作 PDF 文件,常见任务包括 读取、提取文本、提取表格、合并、拆分、旋转、加密/解密 等。

本文将介绍两类主流方案:

  • pdfplumber:擅长提取文本和表格
  • pypdf(PyPDF2 升级版):擅长结构化操作(合并、拆分、旋转、加密等)

1. 环境准备

pip install pdfplumber
pip install pypdf

pypdfPyPDF2 的继任者,API 更现代化,性能更好。


2. 使用 pdfplumber 提取内容

2.1 提取文本

import pdfplumberwith pdfplumber.open("example.pdf") as pdf:for page in pdf.pages:text = page.extract_text()print(text)
  • 优点:对扫描版 PDF 也能较好提取(结合 OCR 工具效果更佳)
  • 适用场景:全文检索、内容分析

2.2 提取表格并保存为 Excel

import pdfplumber
from openpyxl import Workbookwith pdfplumber.open("table.pdf") as pdf:table = pdf.pages[0].extract_table()wb = Workbook()
ws = wb.active
for row in table:ws.append(row)
wb.save("output.xlsx")
  • 适用场景:财务报表、数据统计表格提取

3. 使用 pypdf 操作 PDF 结构

3.1 读取 PDF 基本信息

from pypdf import PdfReaderreader = PdfReader("example.pdf")
print("页数:", len(reader.pages))
print("元数据:", reader.metadata)

3.2 合并 PDF

from pypdf import PdfMergermerger = PdfMerger()
merger.append("file1.pdf")
merger.append("file2.pdf")
merger.write("merged.pdf")
merger.close()

3.3 拆分 PDF

from pypdf import PdfReader, PdfWriterreader = PdfReader("example.pdf")
for i, page in enumerate(reader.pages):writer = PdfWriter()writer.add_page(page)with open(f"page_{i+1}.pdf", "wb") as f:writer.write(f)

3.4 旋转页面

from pypdf import PdfReader, PdfWriterreader = PdfReader("example.pdf")
writer = PdfWriter()page = reader.pages[0]
page.rotate(90)  # 顺时针旋转90度
writer.add_page(page)with open("rotated.pdf", "wb") as f:writer.write(f)

3.5 加密 PDF

from pypdf import PdfReader, PdfWriterreader = PdfReader("example.pdf")
writer = PdfWriter()for page in reader.pages:writer.add_page(page)writer.encrypt("123456")  # 设置密码
with open("encrypted.pdf", "wb") as f:writer.write(f)

4. 常见问题与优化建议

问题解决方案
提取文本乱码尝试 pdfplumber 或结合 OCR(如 pytesseract
表格错位调整 pdfplumbertable_settings 参数
大文件合并慢分批合并,减少内存占用
批量处理使用 glob 遍历文件夹批量操作

5. 总结

  • pdfplumber:适合内容提取(文本、表格)
  • pypdf:适合结构化操作(合并、拆分、旋转、加密)
  • 两者结合,可以覆盖绝大多数 PDF 自动化需求
  • 在批量处理、自动化办公、数据分析等场景中,Python 操作 PDF 能显著提升效率
http://www.dtcms.com/a/390500.html

相关文章:

  • Windows 本地 UV 环境部署 Index-TTS2 实战:基于 EPGF 架构的完整指南(支持 DeepSpeed + FP16)
  • 【cpp Trip第4站】函数参数传递
  • 【Spotfire】实现错行效果
  • 【Day 61】Linux-haproxy负载均衡
  • 搭建线上线下融合的商城小程序,关键步骤有哪些?
  • 软件测试教程资源合集
  • Proteus(8.17)SP2 仿真下载安装过程(附详细安装过程图)
  • 微软获评 2025 Gartner 云原生应用平台魔力象限 领导者
  • Java 生态监控体系实战:Prometheus+Grafana+SkyWalking 整合全指南(一)
  • 【学习】响应系统
  • Linux网络:socket网络套接字
  • 知识图谱对人工智能中自然语言处理的深层语义分析的影响与启示
  • 从车间到云端:Kepware如何加速IIoT落地
  • MyISAM 与 InnoDB 深度对比:如何正确选择 MySQL 存储引擎
  • 串口无线数传模块实现化工园区与3公里外水泵PLC无线通讯实现设备数据传输
  • rook-ceph自定义添加osd流程
  • 【需求导向】解读660页智慧教育大数据信息化顶层设计及智慧应用建设方案
  • InnoDB 引擎深潜指南---从逻辑结构到 MVCC 原理,带源码级案例与性能要点
  • Android Compose 开发 界面间的跳转(Router)
  • unity(C#/cs)请求 python django后端服务器预制体渲染 scroll list 视频列表
  • 《Linux 指令实战进阶:从终端新手到 shell 驾驭者的技术跃迁(第三篇)》
  • 临床AI产品化全流程研究:环境聆听、在环校验与可追溯系统的多技术融合实践(下)
  • Croe 11.0 学习笔记:1.5 草绘
  • Hadoop 1.x 与 2.x 版本对比:架构演进与核心差异解析
  • 【5/20】Express.js 基础:构建 RESTful API,实现用户数据端点
  • SmartX 榫卯企业云平台+ StarRocks 大数据联合解决方案
  • CodeX 新王已来:从技术原理到工程实践,AI 如何重构编程全流程
  • 智慧赋能:King‘s Biobank 重构生物样本管理新范式
  • Chromium 138 编译指南 Ubuntu 篇:环境配置与基础准备(一)
  • 知识库新增三方应用AI问答,新增标签管理,集成Excalidraw,重构全文检索,zyplayer-doc 2.5.4 发布啦!