摘要
本文主要介绍了利用python的PyPDF2库自动处理pdf文件。
PyPDF库的安装
pip install PyPDF2
# 或者使用国内镜像源安装
pip install PyPDF2 -i https://pypi.tuna.tsinghua.edu.cn/simple
PyPDF库的常用功能
文字提取
以下图所示pdf进行文字提取演示
生成pdf文件操作对象
f = open(r"D:\习题一 .pdf","rb")
pdf_reader = PyPDF2.PdfFileReader(f)
获取该pdf文件的页数
page_nums = pdf_reader.numPages
print(page_nums)
4
提取第一页的文字
pdf_page_1 = pdf_reader.getPage(0)
text_page_1 = pdf_page_1.extractText()
print(text_page_1)
f.close()
'lI{gŽ
4
/
I{
4
8
1
eÅ
A
可看出该库对中文的提取质量很差,不建议使用该库进行中文提取。
合并pdf文件
46个PDF文件为例进行合并操作
#创建pdf合并对象
pdf_merger = PyPDF2.PdfFileMerger()
# 读取需要合并的pdf文件,并添加至合并对象
for index,file_dir in enumerate(dirs): # dirs为pdf文件存储路径的列表对象
print("read pdf {}\{}".format(len(dirs),index+1))
pdf_merger.append(file_dir)
# 写出合并后的pdf文件
with open("result.pdf","wb") as f:
pdf_merger.write(f)
print("success to merge!")
# %% 合并pdf...
read pdf 46\1
read pdf 46\2
read pdf 46\3
read pdf 46\4
read pdf 46\5
read pdf 46\6
read pdf 46\7
read pdf 46\8
read pdf 46\9
read pdf 46\10
read pdf 46\11
read pdf 46\12
read pdf 46\13
read pdf 46\14
read pdf 46\15
read pdf 46\16
read pdf 46\17
read pdf 46\18
read pdf 46\19
read pdf 46\20
read pdf 46\21
read pdf 46\22
read pdf 46\23
read pdf 46\24
read pdf 46\25
read pdf 46\26
read pdf 46\27
read pdf 46\28
read pdf 46\29
read pdf 46\30
read pdf 46\31
read pdf 46\32
read pdf 46\33
read pdf 46\34
read pdf 46\35
read pdf 46\36
read pdf 46\37
read pdf 46\38
read pdf 46\39
read pdf 46\40
read pdf 46\41
read pdf 46\42
read pdf 46\43
read pdf 46\44
read pdf 46\45
read pdf 46\46
success to merge!
旋转pdf页面
以文字提取·章节的pdf文件进行页面旋转操作
# 创建pdf写入对象
pdf_writer = PyPDF2.PdfFileWriter()
# 读取待旋转的pdf文件
pdf_reader = PyPDF2.PdfFileReader(r"D:\习题一 .pdf")
# 逐页旋转 并将旋转后的页面 添加至写入对象
for i in range(pdf_reader.numPages):
# 获取第i页
page = pdf_reader.getPage(i)
# 顺时针旋转270度
page.rotateClockwise(270)
# 添加至写入对象
pdf_writer.addPage(page)
# 保存写入对象为pdf文件
with open("rotate_result.pdf","wb") as f:
pdf_writer.write(f)
pdf文件加密
以文字提取·章节的pdf文件进行加密操作
# 读取需要进行加密的pdf文件
pdf_reader = PyPDF2.PdfFileReader(r"D:\习题一 .pdf")
# 新建一个pdf文件写入对象
pdf_writer = PyPDF2.PdfFileWriter()
# 将读取的pdf文件逐页添加至写入对象
for i in range(pdf_reader.numPages):
pdf_writer.addPage(pdf_reader.getPage(i))
# 进行加密
pdf_writer.encrypt(user_pwd = "123456")
# 写出文件
with open("encrypt_result.pdf","wb") as f:
pdf_writer.write(f)
by CyrusMay 2021 01 19
摸不到的颜色
是否叫彩虹
看不到的拥抱
是否叫做微风
——————五月天(星空)——————