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

python自动化操作PDF

一、模块安装

pip install pypdf2 -i https://pypi.tuna.tsinghua.edu.cn/simple  #模块主要作用: 读取、写入、分割、合并PDF文件
pip install pdfplumber -i https://pypi.tuna.tsinghua.edu.cn/simple #模块主要作用:更好的读取 PDF 文件中内容和提取 PDF 中的表格

二、模块使用示例

1.提取页面文字

import pdfplumber
with pdfplumber.open('Netease Q2 2019 Earnings Release-Final.pdf') as pdf:first_page = pdf.pages[0]  # 获取指定页面的内容text = first_page.extract_text()  # 获取页面text内容print(text)

2.提取页面表格

import pdfplumberwith pdfplumber.open('Netease Q2 2019 Earnings Release-Final.pdf') as pdf:first_page = pdf.pages[0]  # 获取指定页面的内容table = first_page.extract_table()  # 获取页面table内容print(table)  # 将表格转换为[[],[],[]]格式
# 提取页面特定表格
with pdfplumber.open('Netease Q2 2019 Earnings Release-Final.pdf') as pdf:
first_page = pdf.pages[9] # 获取指定页面的内容
table = first_page.extract_table(
table_settings ={
'vertical_strat egy': 'text',
'horizontal_strategy': 'text',
}
)
workbook = Workbook()
sheet = workbook.active
for row in table:
if not ''.join([str(item) for item in row]) == '': # 拼接列表中所有元素,判断当前行是否是空行
sheet.append(row)
workbook.save(filename="Netease_Q2_2019_earnings.xlsx")

3.PDF分割  

# 2.x版本
from PyPDF2 import PdfFileReader,PdfFileWriter
pdf_reader = PdfFileReader('Netease Q2 2019 Earnings Release-Final.pdf')
for page in range(pdf_reader.getNumPages()):pdf_writer = PdfFileWriter()pdf_writer.add_page(pdf_reader.getPage(page))with open(f'分割后_Netease Q2 2019 Earnings {page}.pdf','wb') as out:pdf_writer.write(out)# 3.x版本
from PyPDF2 import PdfReader,PdfWriter
pdf_reader = PdfReader('Netease Q2 2019 Earnings Release-Final.pdf')
for page in range(len(pdf_reader.pages)):pdf_writer = PdfWriter()pdf_writer.add_page(pdf_reader.pages[page])with open(f'分割后_Netease Q2 2019 Earnings {page}.pdf','wb') as out:pdf_writer.write(out)

4.PDF合并

# 2.x版本
from PyPDF2 import PdfFileReader, PdfFileWriterpdf_writer = PdfFileWriter()
for page in range(16):  # 16为文件的个数pdf_reader = PdfFileReader(f'分割后_Netease Q2 2019 Earnings {page}.pdf')for page in range(pdf_reader.getNumPages()):pdf_writer.addPage(pdf_reader.getPage(page))
with open('merged.pdf', 'wb') as out:pdf_writer.write(out)# 3.x版本
from PyPDF2 import PdfReader,PdfWriterpdf_writer = PdfWriter()
for page in range(16):  # 16为文件的个数pdf_reader = PdfReader(f'分割后_Netease Q2 2019 Earnings {page}.pdf')for page in range(len(pdf_reader.pages)):  # 循环PDF文件的每一页pdf_writer.add_page(pdf_reader.pages[page])
with open('merged.pdf', 'wb') as out:pdf_writer.write(out)

5.PDF页面旋转

# 2.x版本
from PyPDF2 import PdfFileReader, PdfFileWriter
pdf_reader = PdfFileReader('Netease Q2 2019 Earnings Release-Final.pdf')
pdf_writer = PdfFileWriter()
page = pdf_reader.getPage(0).rotateClockwise(90) #顺时针旋转,只能是90的倍数
pdf_writer.addPage(page)
page = pdf_reader.getPage(1).rotateClockwise(90) #逆时针旋转,只能是90的倍数
pdf_writer.addPage(page)
with open('rotated.pdf', 'wb') as out:pdf_writer.write(out)# 3.x版本
from PyPDF2 import PdfReader, PdfWriter
pdf_reader = PdfReader('Netease Q2 2019 Earnings Release-Final.pdf')
pdf_writer = PdfWriter()
page = pdf_reader.pages[0].rotate(90) #指定页面旋转,只能是90的倍数 正数为顺时针旋转 负数为逆时针旋转
pdf_writer.add_page(page)
page = pdf_reader.pages[1].rotate(-90)
pdf_writer.add_page(page)
with open('rotated.pdf', 'wb') as out:pdf_writer.write(out)

6.PDF添加水印

# 2.x版本
from PyPDF2 import PdfFileReader, PdfFileWriter
from copy import copywatermark_paf = PdfFileReader('shuiyin.pdf')
watermark_page = watermark_paf.getPage(0)
pdf_reader = PdfFileReader('Netease Q2 2019 Earnings Release-Final.pdf')
pdf_writer = PdfFileWriter()for page in range(pdf_reader.getNumPages()):original_page = pdf_reader.getPage(page)new_page = copy(watermark_page)new_page.mergePage(original_page)pdf_writer.addPage(new_page)with open('watermarked.pdf', 'wb') as out:pdf_writer.write(out)# 3.x
from PyPDF2 import PdfReader, PdfWriter
from copy import copywatermark_paf = PdfReader('shuiyin.pdf')
watermark_page = watermark_paf.pages[0]
pdf_reader = PdfReader('Netease Q2 2019 Earnings Release-Final.pdf')
pdf_writer = PdfWriter()for page in range(len(pdf_reader.pages)):original_page = pdf_reader.pages[page]new_page = copy(watermark_page)  # 复制水印页面new_page.merge_page(original_page)  # 此处决定水印在文字下方还是上方 格式:下面的内容.merge_page(出现在上面的内容)pdf_writer.add_page(new_page)with open('watermarked.pdf', 'wb') as out:pdf_writer.write(out)

7.PDF加解密

# 2.x
from PyPDF2 import PdfFileReader, PdfFileWriterpdf_reader = PdfFileReader('Netease Q2 2019 Earnings Release-Final.pdf')
pdf_writer = PdfFileWriter()
for page in range(pdf_reader.getNumPages()):pdf_writer.addPage(pdf_reader.getPage(page))pdf_writer.encrypt('makerbean')  # 加密的密码
with open('encrypted.pdf', 'wb') as out:pdf_writer.write(out)# 3.x
from PyPDF2 import PdfReader, PdfWriterpdf_reader = PdfReader('Netease Q2 2019 Earnings Release-Final.pdf')
pdf_writer = PdfWriter()
for page in range(len(pdf_reader.pages)):pdf_writer.add_page(pdf_reader.pages[page])pdf_writer.encrypt('makerbean')  # 加密的密码
with open('encrypted.pdf', 'wb') as out:pdf_writer.write(out)pdf_reader = PdfReader('encrypted.pdf')
pdf_reader.decrypt('makerbean')
pdf_writer = PdfWriter()
.... 解密后正常操作,不再赘述

  

 

  

  

  

  

  

http://www.gsyq.cn/news/11042.html

相关文章:

  • 完整教程:【数据结构】 ArrayList深入解析
  • 完整教程:PyCharm 在 Linux 上的安装指南
  • 分布式 ID 生成方案实战指南:从选型到落地的全场景避坑手册(二) - 指南
  • BUUCTF-babyheap_0ctf_2017题解(含详细过程与思路分析)
  • 【EF Core】框架底层的数据库连接管理
  • iNeuOS工业互联网操作系统,更新计量数据处理方式和在线报表,实现能源管理基础功能
  • 实用指南:Qt的数据库模块介绍,Qt访问SQLite详细示例
  • React自定义同步状态Hook - 详解
  • SpringBootMVC相关内容
  • 小柏实战学习Liunx(图文教程三十五)
  • HarmonyOS 5 通知与语音能力开发实战:从消息推送到智能语音交互
  • Keithley 万用表里测电阻分成两种模式
  • 实战:基于HarmonyOS 5构建分布式聊天通讯应用
  • HarmonyOS 5 高级动效实战:粒子系统、路径动画与物理动效开发
  • 全新 CloudPilot AI:嵌入 Kubernetes 的 SRE Agent,降本与韧性双提升!
  • HarmonyOS 5 性能优化全攻略:从启动加速到内存管理
  • HarmonyOS 5 网络编程与数据存储实战:从RESTful API到本地持久化
  • 浅谈当前时代下大学生的就业择业及人生规划
  • flink不同环境切换 - --
  • ps-填充色
  • PythonStudio_圆的面积demo源代码
  • HT-AD4PS-1+ 一分四射频功分器:1-500 MHz 小尺寸/低插损,通信、医疗全能打
  • HarmonyOS资源管理与访问:多分辨率与多语言适配
  • 面试官:为什么没有虚拟线程池?
  • 从安装到中文界面,一文带你玩转 DaVinci Resolve 20(零基础也能搞定)
  • linux手动安装阿里云Logtail采集Nginx访问日志
  • 古代史
  • HarmonyOS 5.0+ 安全加密与数据存储最佳实践指南
  • EV论文修改工作
  • B端界面设计的核心逻辑:效率优先还是体验优先?