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


    3f6a7ab0347a4af1a75e6ebadee63fc1.gif

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

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


    8e2b33a2b50b4eea848fc25cb56e06b9.jpeg

    目录

    一、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`库可新建文件夹。

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

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

    PDFfiles

    9354b2c291ad41ba8fcba87eb43a6553.png

            然后,遍历`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`按页码编号写入并保存图片。

     89ab22e1a873404da39530e80d866591.png

     三、往期推荐

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

    使用Python自动发送邮件

    Python操作ppt和pdf基础

    Python操作word基础

    Python操作excel基础

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

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

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

    四、文末推荐与福利

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

    03b123cecb5f40cf9c19e23fe9b262c5.jpeg

    内容简介:   

           《巧用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  

    6535471a51ec4e0499e132a96e7ffc84.png

     

  • 相关阅读:
    Python哪个版本最稳定好用2023.10.19
    【Python】:数据可视化之相关系数热力图绘制(二)(seaborn版本)
    SpringMVC 框架详解
    npm封装插件打包上传后图片资源错误
    【会议征稿通知】2024第四届神经网络、信息与通信工程国际学术会议(NNICE 2024)
    KNN学习代码理解尝试
    【图像增强】基于麻雀搜索算法与双伽马校正的图像自适应增强算法Matlab代码
    洛谷千题详解 | P1008 [NOIP1998 普及组] 三连击【C++、Java、Python语言】
    如何打造一个属于自己的元宇宙电商-数字藏品NFG系统?
    实现响应式布局有几种方法
  • 原文地址:https://blog.csdn.net/m0_64336780/article/details/132794702