Python办公自动化之PDF

Python操作PDF

    • 1、Python操作PDF概述
    • 2、批量拆分
    • 3、批量合并
    • 4、提取内容(文字)
    • 5、提取内容(表格)
    • 6、提取图片
    • 7、PDF添加水印
    • 8、加密与解密
    • 9、PDF转Word

1、Python操作PDF概述


Python操作PDF主要有两个库:PyPDF2和pdfplumber

  • PyPDF2是一个用于处理PDF文件的Python第三方库

    • 官网文档参考:https://pypi.org/project/PyPDF2/

  • pdfplumber是一个用于解析PDF文档的第三方库,可以解析、提取、转换PDF文档数据

    • 官网文档参考:https://github.com/jsvine/pdfplumber

安装:

pip install PyPDF2
pip install pdfplumber

常用操作主要包括:拆分、合并、文字与表格提取、图片提取、添加水印、加密与解密等

2、批量拆分


操作步骤:

  • 读取PDF的整体内容
  • 遍历每一页,以step为间隔将PDF存成小文件块
  • 将小文件块重新保存为新的PDF文件
import os
from PyPDF2 import PdfReader, PdfWriter# filepath:读取文件路径  filename:保存文件的统一命名  dirpath:保存文件路径  step:每隔多少页生成一个文件
def split_pdf(filepath, dirpath, filename, step):# 创建保存目录if not os.path.exists(dirpath):os.mkdir(dirpath)pdf_reader = PdfReader(filepath)# 读取每一页的数据page_list = pdf_reader.pagespages = len(page_list)for page in range(0, pages, step):pdf_writer = PdfWriter()# 拆分pdf,每step页的拆分为一个文件,如step=5,表示0-4页、5-9页...各为一个文件for index in range(page, page + step):if index < pages:pdf_writer.add_page(page_list[index])# 保存拆分后的小文件save_path = os.path.join(dirpath, filename + str(int(page / step) + 1) + '.pdf')print(save_path)with open(save_path, "wb") as out:pdf_writer.write(out)print("保存路径: " + dirpath)split_pdf(r'C:\Users\cc\Desktop\test.pdf', r'C:\Users\cc\Desktop\PDF', 'pdf_split_', step=2)

3、批量合并


操作步骤:

  • 确定合并文件顺序
  • 循环追加到一个文件块中
  • 保存为一个新文件
# filepath:要合并的PDF文件目录  filename:原文件的统一命名  dirpath:合并后的保存路径
def concat_pdf(filepath, dirpath, filename):pdf_writer = PdfWriter()# ['pdf_split_1.pdf', 'pdf_split_2.pdf']list_filename = os.listdir(filepath)# 对文件进行排序list_filename.sort(key=lambda x: int(x[:-4].replace(filename, "")))for filename in list_filename:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/88032.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

探索视听新纪元: ChatGPT的最新语音和图像功能全解析

&#x1f337;&#x1f341; 博主猫头虎&#xff08;&#x1f405;&#x1f43e;&#xff09;带您 Go to New World✨&#x1f341; &#x1f405;&#x1f43e;猫头虎建议程序员必备技术栈一览表&#x1f4d6;&#xff1a; &#x1f916; 人工智能 AI: &#x1f9e0; Machine …

图形处理软件Photoshop Elements 2020 mac中文版 ps简化版

Photoshop Elements 2020 mac是一款非常实用的图形处理工具。ps elements 2020 mac中文版可以帮助您自动生成照片和视频作品的功能&#xff0c;采用Adobe Sensei AI技术可进行图像组织、编辑和创建等。Photoshop Elements 2020 for Mac激活版可以帮助您轻松整理照片和视频&…

GeoPandas和Matplotlib地图高亮显示——与中国建交的国家(不全)

GeoPandas和Matplotlib地图高亮显示——与中国建交的国家&#xff08;不全&#xff09; 一、概要二、整体架构流程三、完整代码 一、概要 这段代码是使用GeoPandas和Matplotlib库在Python中绘制世界地图的一个例子&#xff0c;它突出了与中国建交的国家&#xff08;部分&#x…

全栈工程师必须要掌握的前端JavaScript技能

作为一名全栈工程师&#xff0c;在日常的工作中&#xff0c;可能更侧重于后端开发&#xff0c;如&#xff1a;C#&#xff0c;Java&#xff0c;SQL &#xff0c;Python等&#xff0c;对前端的知识则不太精通。在一些比较完善的公司或者项目中&#xff0c;一般会搭配前端工程师&a…

【kafka实战】03 SpringBoot使用kafka生产者和消费者示例

本节主要介绍用SpringBoot进行开发时&#xff0c;使用kafka进行生产和消费 一、引入依赖 <dependencies><dependency><groupId>org.springframework.kafka</groupId><artifactId>spring-kafka</artifactId></dependency><depen…

智能热水器丨打造智能家居新体验

随着科学技术的不断发展&#xff0c;智能电器越来越被大众所采纳&#xff0c;如智能扫地机&#xff0c;智能洗衣机&#xff0c;智能微波炉等等&#xff0c;越来越智能的电器为人们的生活带来了许多便利。以往的热水器一般都是只有按键/机械的控制方式&#xff0c;没有其他无线控…

postgresql 创建listen notify .net core6.0监听连接

背景&#xff1a;数据库某张表定时有第三方更新到实时表里&#xff0c;收到数据更新以后&#xff0c;WEBSOCKET发送前端 -- 创建一个发送通知的函数 CREATE OR REPLACE FUNCTION notify_event(event_name text) RETURNS void AS $$ BEGIN PERFORM pg_notify(event_name, ); E…

2015年蓝桥杯省赛C/C++ A组 灾后重建题解(100分)

10. 灾后重建 Pear市一共有N&#xff08;<50000&#xff09;个居民点&#xff0c;居民点之间有M&#xff08;<200000&#xff09;条双向道路相连。这些居民点两两之间都可以通过双向道路到达。这种情况一直持续到最近&#xff0c;一次严重的地震毁坏了全部M条道路。 震后…

Vue3中的watchEffect函数

总结&#xff1a; watch的套路是&#xff1a;既要指明监视的属性&#xff0c;也要指明监视的回调 watchEffect的套路是&#xff1a;不用指明监视那个属性&#xff0c;监视的回调中用到哪个属性&#xff0c;那就监视哪个属性 watchEffect有点像computed&#xff1a; 但computed注…

操作系统级 ChatGPT 爆火!

本期推荐开源项目目录&#xff1a; 1. 操作系统贾维斯&#xff1f; 2. 开源翻译模型 3. 整理的 AI 技术资料 01 操作系统贾维斯&#xff1f; 让你的操作系统额变得智能&#xff0c;通过在终端输入自然语言 来让计算机执行一些通用的功能&#xff0c;比如创建、编辑照片、文件夹…

根据excel批量修改文件夹及其文件名称

简介 表哥公司电脑上有一大批文件夹&#xff0c;用于存放一些pdf。他希望对这些文件进行整理。文件夹批量重命名为好记一些的名字&#xff0c;文件夹下的pdf改成的名字格式为&#xff1a;文件夹名序号。 例如&#xff1a;文件夹从“1234”&#xff0c;改成“案件001”&#xf…

亚马逊投资Anthropic; OpenAI将推出新版ChatGPT

&#x1f989; AI新闻 &#x1f680; 亚马逊投资Anthropic获得可靠AI基础模型开发合作 摘要&#xff1a;亚马逊投资Anthropic至多40亿美元&#xff0c;将共同开发可靠高性能的基础模型&#xff0c;并能提前使用Anthropic技术。Anthropic将主要依赖亚马逊的云服务来训练未来的…

如何使用show profile 查看sql的执行周期

修改配置文件/etc/my.cnf 新增一行&#xff1a;query_cache_type1 重启mysql 先开启 show variables like %profiling%; set profiling1;select * from xxx ;show profiles; #显示最近的几次查询show profile cpu,block io for query 编号 #查看程序的执行步骤

微表情识别API + c++并发服务器系统

微表情识别API c并发服务器系统 该项目只开源c并发服务器程序&#xff0c;模型API部分不开源 地址&#xff1a;https://github.com/lin-lai/-API- 更新功能 4.1版本 改用epoll实现IO多路复用并发服务器 项目介绍 本项目用于检测并识别视频中人脸的微表情 目标任务: 用户上…

黑马JVM总结(二十四)

&#xff08;1&#xff09;练习-分析a a:先执行iload1&#xff1a;把数据读入到操作数栈中 iinc&#xff1a;把局部变量表中的1号曹位做一个自增&#xff0c;他在局部变量表中发生的并没有影响到操作数栈 a&#xff1a;限制性自增在做iload 自增变成12 iload把12读取到操作数…

Linux学习之HIS部署(4)

ElasticSearch部署 ElasticSearch资源 RabbitMQ资源 ElasticSearch服务部署 #OpenJDK环境部署 [rootServices ~]# yum clean all; yum repolist -v ... Total packages: 8,265 [rootServices ~]# yum -y install java-1.8.0-openjdk-devel.x86_64 #安装OpenJDk ... Compl…

android被杀以后fragments缓存重建问题和测试方法

这个问题&#xff0c;其实不是太好复现。因为在android的缓存Fragment机制是写在androidx的库中。 主要的原因是android Framework机制&#xff1a; framework at yourpackage.onSaveInstanceState(XXXActivity.kt:118) at android.app.Activity.performSaveInstanceState(A…

微信删除好友对方知道吗?如何加回微信好友?

微信是我们日常生活中使用最多的社交软件&#xff0c;很多小伙伴在使用微信时都曾发出过这样的疑问&#xff1a;微信删除好友对方知道吗&#xff1f;当自己在微信中删除某人后&#xff0c;对方是否会收到信息提醒&#xff1f;另外&#xff0c;如果删除好友后感到后悔&#xff0…

鄙视测试,理解测试,成为测试

首先&#xff0c;其实题主的问题还是很实诚的&#xff0c;我刚开始做测试的时候其实也是这个心态&#xff0c;想转开发&#xff0c;也学习了很多的语言&#xff0c;个人觉得这是职业危机感的表现&#xff0c;挺好的&#xff0c;也相信题主不管去做开发和测试都会去不断的学习和…

start()方法源码分析

当我们创建好一个线程之后&#xff0c;可以调用.start()方法进行启动&#xff0c;start()方法的内部其实是调用本地的start0()方法&#xff0c; 其实Thread.java这个类中的方法在底层的Thread.c文件中都是一一对应的&#xff0c;在Thread.c中start0方法的底层调用了jvm.cpp文件…