【办公自动化】用Python将PDF文件转存为图片(文末送书)

🤵‍♂️ 个人主页:@艾派森的个人主页

✍🏻作者简介:Python学习者
🐋 希望大家多多支持,我们一起进步!😄
如果文章对你有帮助的话,
欢迎评论 💬点赞👍🏻 收藏 📂加关注+


目录

一、Python处理PDF

二、用Python将PDF文件转存为图片

三、往期推荐

四、文末推荐与福利


一、Python处理PDF

  • Python处理PDF的好处

  1. 自动化和批量处理:使用Python,你可以自动处理大量的PDF文件,例如从扫描仪生成的文档、报告、合同等。这可以节省大量时间和努力,尤其是在需要重复性任务时。

  2. 文本提取:Python可以轻松地从PDF中提取文本内容,使其可搜索、可编辑和可分析。这对于文本分析、数据挖掘和文档检索等任务非常有用。

  3. 报告生成:你可以使用Python创建自定义的PDF报告,将数据、图表和图像等信息以专业的方式呈现。这对于生成自动化的业务报告、数据可视化和数据分析很有帮助。

  4. PDF编辑:Python库和工具使你能够合并、拆分、旋转、裁剪和编辑PDF文件的页面。这对于在不使用专业PDF编辑软件的情况下进行简单的文档编辑很有用。

  5. 图像提取:Python允许你从PDF文件中提取图像,这对于处理包含图形、图表和图片的文档非常有帮助。

  6. 数据提取:当PDF文件包含表格或结构化数据时,Python可以用于提取和转换这些数据,以便进一步分析或导入到数据库中。

  7. 自定义处理:Python提供了多种用于PDF处理的库,允许你根据项目的需求进行自定义处理。你可以选择适合你需求的库,以满足具体要求。

  8. 跨平台:Python是跨平台的,因此你可以在不同操作系统上运行相同的代码,而无需担心兼容性问题。

Python处理PDF文件的主要第三方库包括:

  1. PyPDF2:PyPDF2是一个用于处理PDF文件的库,可以用于提取文本、合并、拆分和旋转PDF文件的页面。它还支持添加页面、水印和书签等功能。

  2. ReportLab:ReportLab是一个用于创建PDF文件的库,允许你以编程方式构建PDF文档,包括添加文本、图像、表格等。

  3. PDFMiner:PDFMiner是一个用于提取文本和元数据的PDF处理库。它可以解析PDF文件并提取文本、布局信息和链接等。

  4. pdf2image:pdf2image是一个用于将PDF文件转换为图像的库,这对于处理包含图形的PDF文件非常有用。

  5. fpdf2:fpdf2是一个用于创建PDF文件的库,支持自定义字体、图像和表格等。

  6. PyMuPDF:PyMuPDF是一个用于处理PDF文件的库,可以用于提取文本、图像和元数据。它还支持PDF文件的渲染和转换为图像。

  7. Camelot:Camelot是一个用于提取表格数据的库,特别适用于从PDF文件中提取表格数据。

  8. Tabula-py:Tabula-py是一个用于提取表格数据的库,可将PDF中的表格转换为DataFrame对象。

  • 开发环境

操作系统:使用windows, mac都可以

Python版本:系统中需要安装Python3.6以上的版本,Python2已经过期不建议使用,Python3.6以前的版本功能相对弱,最好就是采用Python3.6以上的版本

开发工具:有两个可以选择,jupyter notebook,是个网页编辑器,可以运行Python,常常用于交互性、探索性的开发;pycharm,用于成熟脚本,或者web服务的一些开发;这两个工具可以随意选择。

二、用Python将PDF文件转存为图片

技术工具:

Python版本:3.9

代码编辑器:jupyter notebook

        因工作中的某些奇葩要求,需要将PDF文件的每页内容转存成按顺序编号的图片。用第三方软件或者在线转换也可以,但批量操作还是Python方便,所谓搞定办公自动化,Python出山,一统天下;Python出征,寸草不生~ O(∩_∩)O

        不过这个需要用到`PyMuPDF`库,电脑运行cmd,输入“pip install PyMuPDF”安装即可。安装后通过`import fitz`导入模块。等等,为什么安装的是`PyMuPDF`,导入的是`fitz`?俺`PyMuPDF`就是这么任性,怎么的,爱用不用!哈哈,开个玩笑。其实是因为`PyMuPDF`曾用名`fitz-python`,所以只是`fitz`换了个马甲而已。

        这里先导入`fitz`库,用于将PDF文件的页面提取成像素信息(图片)。再导入`glob`库,用于获取后缀为".pdf"的文件的文件名。`os`库可新建文件夹。

#批量将PDF文件转为图片
import fitz
import glob
import osimage_path = "图片\\" #存放图片的文件夹
PDFfiles = glob.glob("PDF文件\\*.pdf") #获取所有pdf文件的文件名
for PDFfile in PDFfiles: #遍历所有PDF文件PDFdoc = fitz.open(PDFfile) #读取PDF文件folder_name = PDFfile.split("\\")[-1].split(".")[0] #按源文件名新建文件夹for pg in range(PDFdoc.pageCount): #根据PDF的页数,按页提取图片        page = PDFdoc[pg]#增强图片分辨率zoom_x = 3 #水平方向zoom_y = 3 #垂直方向mat = fitz.Matrix(zoom_x, zoom_y) pix = page.getPixmap(matrix=mat)  #按原PDF名称新建文件夹并按顺序保存图片if not os.path.exists(image_path+folder_name):#判断文件夹是否已存在os.makedirs(image_path+folder_name)#不存在则新建,存在就跳过这行pix.writeImage(image_path+folder_name + "\\{}.png".format(str(pg+1))) #按PDF中的页面顺序命名并保存图片

        以上,我们先将所有待处理的PDF文件放入“PDF文件夹”,然后通过`glob.glob("PDF文件\\*.pdf")`搜索并抓取所有以".pdf"为后缀的文件,并存入变量`PDFfiles`中。结果如下所示:

PDFfiles

        然后,遍历`PDFfiles`中的所有PDF文件,使用`fitz.open()`读取。`fitz.open()`用于创建PDF文件中页面的像素映射(pixel maps),即用像素来表示页面信息。然后按PDF文件名命名一个新的文件夹,以便储存图片。比如给“收货记录.pdf”文件建一个名字为“收货记录”的文件夹,专门储存关于它的页面的图片。随后用`for`循环,根据PDF的页数,按页提取图片。将每页的信息存入`page`变量,它的type 是`fitz.fitz.Page`,即一页像素文件。

        为了让图片看起来更清晰,需要增强图片的分辨率,设定图片水平及垂直方向的增强倍数,传入`Matrix`。`Matrix`用于提升即将保存的图片的分辨率,分辨率的提升倍数为`zoom_x`与`zoom_y`的乘积。倍数越大,图片越清晰,当然占用空间也越大。这个参数可根据实际要求调整。然后将`Matrix`存入`mat`,传入`getPixmap()`。`getPixmap()`用于控制图片分辨率、色域(比如生成灰度图像或带有减色方案的图像)、透明度、旋转、镜像、移位、剪切等。由于其它都不需要专门设定,所以只增强其分辨率。 

        一页图片处理好后,就需要保存图片了。先通过`os.path.exists`判断一下需要的文件夹是否存在,若不存在就通过`os.makedirs`创建。然后用`pix.writeImage`按页码编号写入并保存图片。

 

 三、往期推荐

Python提取pdf中的表格数据(附实战案例)

使用Python自动发送邮件

Python操作ppt和pdf基础

Python操作word基础

Python操作excel基础

使用Python一键提取PDF中的表格到Excel

 使用Python批量生成PPT版荣誉证书

使用Python批量处理Excel文件并转为csv文件

四、文末推荐与福利

《巧用ChatGPT轻松玩转新媒体运营》免费包邮送出3本!

内容简介:   

       《巧用ChatGPT轻松玩转新媒体运营》从ChatGPT的基础知识讲起,针对运营工作中的各种痛点,结合实战案例,如文案写作、图片制作、社交媒体运营、爆款视频文案、私域推广、广告策划、电商平台高效运营等,手把手教你使用ChatGPT进行智能化工作。此外,还介绍了通过ChatGPT配合Midjourney、D-ID等AI软件的使用,进一步帮助提高运营工作的效率。
        《巧用ChatGPT轻松玩转新媒体运营》内容通俗易懂,案例丰富,实用性较强,特别适合想要掌握ChatGPT对话能力的读者和各行各业的运营人员,如互联网运营人员、自媒体运营人员、广告营销人员、电商运营人员等。 另外,《巧用ChatGPT轻松玩转新媒体运营》也适合作为相关培训机构的教材使用。

编辑推荐:

        AI赋能运营全流程实操:文案写作 图片制作 社交媒体运营 爆款视频文案 私域推广 广告策划 电商平台高效运营。AI运营技巧大全 痛点解析,全面提高效率,让你弯道超车、轻松攀登运营之巅。

  • 抽奖方式:评论区随机抽取3位小伙伴免费送出!
  • 参与方式:关注博主、点赞、收藏、评论区评论“人生苦短,拒绝内卷!”(切记要点赞+收藏,否则抽奖无效,每个人最多评论三次!
  • 活动截止时间:2023-09-30 20:00:00
  • 京东购买链接:https://item.jd.com/14141370.html

  • 当当网购买链接:http://product.dangdang.com/29623612.html

 名单公布时间:2023-09-30 21:00:00  

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

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

相关文章

【嵌入式】使用嵌入式芯片唯一ID进行程序加密实现

目录 一 背景说明 二 原理介绍 三 设计实现 四 参考资料 一 背景说明 项目程序需要进行加密处理。 考虑利用嵌入式芯片的唯一UID,结合Flash读写来实现。 加密后的程序,可以使得从芯片Flash中读取出来的文件(一般为HEX格式)不能…

rsync+inotify实时同步数据

一、相关简介 1、rsync(remote synchronize) rsync是 Liunx/Unix 下的一个远程数据同步工具,它可通过 LAN/WAN 快速同步多台主机间的文件和目录。   Linux 之间同步文件一般有两种方式,分别是 rsync 与 scp ,scp 相…

前端性能优化汇总

1.减少HTTP请求次数和请求的大小 (三大类) 文件的合并和压缩:(1)(6) 延迟加载:(3)(4) 用新的文件格式代替传统文件格式:&a…

基于LQR算法的一阶倒立摆控制

1. 一阶倒立摆建模 2. 数学模型 倒立摆的受力分析网上有很多,这里就不再叙述。直接放线性化后的方程: F (Mm)x″-mLφ″ (ImL)φ″ mLx″ mgLφ(F为外力,x为物块位移,M,m为物块和摆杆的质量,…

抽象轻松java

嗨嗨嗨! 没想到吧,出现了抽象轻松第4种语言系列(我也没想到) 简单的java程序,看完就懂的简单逻辑——购物车系统 购物车,首先要有商品吧,现实中的商品有什么属性? 名字&#xff0…

CSS详细基础(一)选择器基础

本帖开始,我们来介绍CSS——即,层叠样式表~ 层叠样式表是一种用来表现HTML(标准通用标记语言的一个应用)或XML(标准通用标记语言的一个子集)等文件样式的计算机语言。简单的说,层叠就是对一个元…

PostgreSQL 查询某个属性相同内容出现的次数

查询某个数据库表属性 name 相同内容出现出现的次数,并按次数从大到小排序 SELECT name, COUNT(*) AS count FROM your_table GROUP BY name ORDER BY count DESC;示例 select project_id, COUNT(*) AS count from app_ads_positions group by project_id order b…

认证-authentication 和授权-authorization

就好比你可以刷卡进去xxx大厦(认证是本公司职员),但无法刷卡进入金融部门,或 实验部门(因为没有授权)

vite跨域proxy设置与开发、生产环境的接口配置,接口在生产环境下,还能使用proxy代理地址吗

文章目录 vite的proxy开发环境设置如果后端没有提供可以替换的/mis等可替换的后缀的处理办法接口如何区分.env.development开发和.env.production生产环境接口在生产环境下,还能使用proxy代理地址吗? vite的proxy开发环境设置 环境: vite 4…

玩转Mysql系列 - 第22篇:mysql索引原理详解

这是Mysql系列第22篇。 背景 使用mysql最多的就是查询,我们迫切的希望mysql能查询的更快一些,我们经常用到的查询有: 按照id查询唯一一条记录 按照某些个字段查询对应的记录 查找某个范围的所有记录(between and) …

忽视日志吃大亏,手把手教你玩转 SpringBoot 日志

一、日志重要吗 程序中的日志重要吗? 在回答这个问题前,笔者先说个事例: ❝ 笔者印象尤深的就是去年某个同事,收到了客户反馈的紧急bug。尽管申请到了日志文件,但因为很多关键步骤没有打印日志,导致排查进…

win10 使用cmake + mingw编译LAPACK

参考官网的内容: 适用于视窗的 LAPACK (utk.edu) 第一步下载好源码包: 配置好mingw的路径添加到环境变量中 gcc --version 出现这些就行了. 还有就是吧mingw中的mingw-make.exe重命名为make.exe 下载安装cmake 然后打开 1是源码路径,路径中一定要有CMakeLists.txt如果没…

Java多线程篇(6)——AQS之ReentrantLock

文章目录 1、管程2、AQS3、ReentrantLock3.1、lock/unlock3.1.1、lock3.1.2、unlock 3.2、一些思考 1、管程 什么是管程? 管理协调多个线程对共享资源的访问,是一种高级的同步机制。 有哪些管程模型? hansen:唤醒其他线程的代码…

渗透测试中的前端调试(一)

前言 前端调试是安全测试的重要组成部分。它能够帮助我们掌握网页的运行原理,包括js脚本的逻辑、加解密的方法、网络请求的参数等。利用这些信息,我们就可以更准确地发现网站的漏洞,制定出有效的攻击策略。前端知识对于安全来说,…

Pytorch单机多卡分布式训练

Pytorch单机多卡分布式训练 数据并行: DP和DDP 这两个都是pytorch下实现多GPU训练的库,DP是pytorch以前实现的库,现在官方更推荐使用DDP,即使是单机训练也比DP快。 DataParallel(DP) 只支持单进程多线程…

3、嵌入式系统的启动过程(BoodLoader)

1、系统启动过程 通电 - > 执行BootLoader - > 加载内核 - > 挂在根文件系统 - > 执行应用程序 Windows的启动过程: 通电 - > 执行BIOS - > 加载WinNT内核 - > 挂在文件系统 - > 执行应用程序 二、嵌入式系统的结构 BootLoader 1、BootL…

ElasticSearch - 基于 DSL 、JavaRestClient 实现数据聚合

目录 一、数据聚合 1.1、基本概念 1.1.1、聚合分类 1.1.2、特点 1.2、DSL 实现 Bucket 聚合 1.2.1、Bucket 聚合基础语法 1.2.2、Bucket 聚合结果排序 1.2.3、Bucket 聚合限定范围 1.3、DSL 实现 Metrics 聚合 1.4、基于 JavaRestClient 实现聚合 1.4.1、组装请求 1…

Tomcat多实例、负载均衡、动静分离

Tomcat多实例部署 安装jdk [rootlocalhost ~]#systemctl stop firewalld.service [rootlocalhost ~]#setenforce 0 [rootlocalhost ~]#cd /opt [rootlocalhost opt]#ls apache-tomcat-8.5.16.tar.gz jdk-8u91-linux-x64.tar.gz rh [rootlocalhost opt]#tar xf jdk-8u91-linu…

春招秋招,大学生求职容易遇到哪些问题?

每到毕业季就有大批大学生从校园出来,他们怀抱梦想,希望能做出一番成绩。但现实总归是残酷的,有些人找不到工作,有一些人频繁跳槽,也有一些人最终找到的工作与自己的专业没有一点关系,迷茫好几年才找到方向…

钡铼BL302与PLC:提升酿酒业效率与品质的利器

啤酒是人类非常古老的酒精饮料,是水和茶之后世界上消耗量排名第三的饮料。 啤酒在生产过程中主要有制造麦芽、粉碎原料、糖化、发酵、贮酒後熟、过滤、灌装包装等工序流程。需要用到风选机、筛分机、糖化锅、发酵设备、过滤机、灌装机、包装机等食品机械设备。这些食…