python学习-处理pdf文档
本文介绍 python 如何处理
供自己以后查漏补缺,也欢迎同道朋友交流学习。
引言
上一篇文章,Python 如何处理 Word
文档,本篇主要介绍如何处理 PDF
文档,包括安装依赖库、读取和写入PDF文件、合并和拆分PDF文件、添加水印和加密等操作。
PyPDF2简介
PyPDF2
是 Python
中一个非常流行的库,专门用于处理 PDF
文件,它具有以下特点:
- 功能全面:提供了读取、写入、合并、拆分文件的功能,还能提取文本和元数据,满足大多数 PDF 处理需求。
- API简洁:
API
设计简洁,易于理解和使用,使得开发者可以快速实现 PDF 文件的读取和写入操作。 - 灵活性:允许开发者对 PDF 文件进行
细粒度
的操作,如单独处理每一页,或者对页面内容进行修改。
安装依赖库
pip install PyPDF2
# or
pip3 install PyPDF2
读取PDF文件
打开并读取PDF
- 使用
open
打开文件读取二进制信息 - 使用
PdfReader
读取文件信息 - 使用
reader.pages
获取 PDF 文件的页数 - 使用
reader.metadata
获取 PDF 文件的元数据 - 使用
page.extract_text()
提取文本内容
import PyPDF2
# 打开PDF文件
with open('example.pdf', 'rb') as file:
reader = PyPDF2.PdfReader(file)
print("PDF文件成功打开")
# 获取PDF文件的页数
num_pages = len(reader.pages)
print(f"PDF文件共有 {num_pages} 页")
# 获取PDF的元数据
print("PDF元数据:", reader.metadata)
# 提取文本内容
# 遍历每一页并提取文本
text = ''
for page_num in range(num_pages):
page = reader.pages[page_num]
text += page.extract_text() or '' # 使用`or ''`避免None值
print("提取的文本内容:")
print(text)
写入PDF文件
- 使用
PdfWriter
创建新的PDF文件对象 - 使用
add_page
添加页面内容 - 使用
write
写入文件
from PyPDF2 import PdfWriter, PdfReader
# 创建新的PDF文件对象
pdf_writer = PdfWriter()
# 读取老文件的pdf内容
old_pdf = open('example.pdf', 'rb')
pdf_rd = PdfReader(old_pdf)
# 添加页面内容
pdf_writer.add_page(pdf_rd.pages[0])
# 写入文件
with open('demo-1.pdf', 'wb') as pdf_file:
pdf_writer.write(pdf_file)
合并和拆分PDF文件
合并PDF文件
合并 PDF 文件,无非就是使用 add_page
去添加页面,然后写入文件即可。
from PyPDF2 import PdfWriter, PdfReader
# 创建新的PDF文件对象
pdf_writer = PdfWriter()
# 打开多个PDF文件
pdf1 = PdfReader(open('demo-1.pdf', 'rb'))
pdf2 = PdfReader(open('example.pdf', 'rb'))
# 将每个PDF的所有页面添加到PdfWriter对象中
for page in pdf1.pages:
pdf_writer.add_page(page)
for page in pdf2.pages:
pdf_writer.add_page(page)
# 保存合并后的PDF文件
with open('merged_pdf.pdf', 'wb') as file:
pdf_writer.write(file)
拆分PDF文件
拆分 PDF 文件,也是使用 add_page
分开去添加pdf文件,根据 pages
的数量来拆分。
from PyPDF2 import PdfWriter, PdfReader
# 打开PDF文件
with open('merged_pdf.pdf', 'rb') as file:
reader = PdfReader(file)
# 遍历PDF的每一页并将其保存为单独的文件
for i, page in enumerate(reader.pages):
pdf_writer = PdfWriter()
pdf_writer.add_page(page)
# 每个拆分的文件以页码命名
with open(f'split_page_{i+1}.pdf', 'wb') as split_pdf:
pdf_writer.write(split_pdf)
添加水印
使用 merge_page
方法,将水印页面合并到原页面上。
from PyPDF2 import PdfWriter, PdfReader
# 打开原PDF文件和水印PDF文件
reader = PdfReader("example.pdf")
watermark_reader = PdfReader("watermark.pdf")
watermark_page = watermark_reader.pages[0] # 假设水印在第一页
# 创建PDF写入对象
writer = PdfWriter()
# 遍历原PDF的每一页,并将水印页面合并上去
for page in reader.pages:
page.merge_page(watermark_page)
writer.add_page(page)
# 保存添加水印后的PDF文件
with open("watermarked_example.pdf", "wb") as file:
writer.write(file)
加密PDF
使用 encrypt()
函数对 PDF 文件进行加密。
from PyPDF2 import PdfWriter, PdfReader
reader = PdfReader("example.pdf")
writer = PdfWriter()
# 将PDF文件的每一页添加到写入对象中
for page in reader.pages:
writer.add_page(page)
# 对PDF文件进行加密
writer.encrypt("123456")
# 保存加密后的PDF文件
with open("encrypted.pdf", "wb") as file:
writer.write(file)
python学习专栏系列
- python学习-基础学习1
- python学习-基础学习2
- python学习-基础学习3
- python学习-面向对象编程1
- python学习-面向对象编程2
- python学习-文件读写
- python学习-程序异常处理
- python学习-正则
- python学习-处理word文档
- python学习-处理pdf文档
- python学习-处理excel文档
- python学习-处理csv文档
- python学习-使用matplotlib绘制图表
- python学习-处理JSON数据
- python学习-SQLite数据库
- python学习-多线程处理
- python学习-网络爬虫