Python自动化小技巧23——PDF文件拆分为单独页面(PyMuPDF)

其实编辑PDF用Adobe就行,它功能超级齐全,可是这玩意要收费...去弄免费破解版,找资源又得半天,所以用python来拆分PDF文件吧,可以批量化处理。

至于为什么不用WPS.....别问,问就是不想开会员。


脚本代码

先安装PyMuPDF库,

pip install PyMuPDF

代码: 

import fitz  # PyMuPDFdef split_pdf(input_pdf, output_folder):pdf_document = fitz.open(input_pdf)for page_num in range(pdf_document.page_count):page = pdf_document[page_num]# 构建输出文件名,以页数命名output_pdf = f"{output_folder}/Page_{page_num + 1}.pdf"# 创建一个新的Document对象,包含当前页面new_pdf = fitz.open()new_pdf.insert_pdf(pdf_document, from_page=page_num, to_page=page_num)# 保存单独的PDF文件new_pdf.save(output_pdf)new_pdf.close()pdf_document.close()if __name__ == "__main__":input_pdf = "157-GGCG[2021]157成套门--武汉******有限公司356996.80.pdf"  output_folder = "C:\\Users\\cx\\Desktop\\pdf"  split_pdf(input_pdf, output_folder)

把输入路径和输出路径都改一下就行了,整个PDF就会被拆分为一页一页的单独的文件。

如果只需要某一页的话,按照文件名拿出来就行。

需要某些面的话,按照PyMuPDF的语法改就行。


其他用法:

PyMuPDF(也称为fitz)是一个强大的Python库,用于处理PDF文件。除了拆分PDF文件,它还提供了许多其他常用的方法和功能。以下是一些常见的PyMuPDF方法和用法示例:

  1. 提取文本内容

    使用get_page_text方法可以提取PDF页的文本内容。以下是一个示例:

    import fitzdef extract_text_from_pdf(pdf_file):pdf_document = fitz.open(pdf_file)text = ""for page_num in range(pdf_document.page_count):page = pdf_document[page_num]text += page.get_text()pdf_document.close()return textpdf_text = extract_text_from_pdf("your_pdf.pdf")
    print(pdf_text)
    

  2. 获取页面信息

    您可以使用get_page_info方法来获取PDF页的信息,如大小和旋转。以下是一个示例:

    import fitzdef get_page_info(pdf_file):pdf_document = fitz.open(pdf_file)for page_num in range(pdf_document.page_count):page = pdf_document[page_num]page_info = page.get_page_info()print(f"Page {page_num + 1}: Size={page_info['size']}, Rotation={page_info['rotate']}")get_page_info("your_pdf.pdf")
    

  3. 旋转页面

    您可以使用set_rotation方法来旋转PDF页面。以下是一个示例:

    import fitzdef rotate_page(pdf_file, page_num, degrees):pdf_document = fitz.open(pdf_file)page = pdf_document[page_num - 1]page.set_rotation(degrees)pdf_document.save("rotated_pdf.pdf")pdf_document.close()rotate_page("your_pdf.pdf", 1, 90)  # 将第一页旋转90度
    

  4. 插入页面

    使用insert_pdf方法可以将一个PDF文件的页面插入到另一个PDF文件中。以下是一个示例:

    import fitzdef insert_page(source_pdf, target_pdf, page_num):source_document = fitz.open(source_pdf)target_document = fitz.open(target_pdf)target_document.insert_pdf(source_document, from_page=page_num - 1, to_page=page_num - 1)target_document.save("merged_pdf.pdf")source_document.close()target_document.close()insert_page("insert.pdf", "target.pdf", 2)  # 将insert.pdf的第二页插入到target.pdf中
    

这些示例展示了PyMuPDF的一些常见用法。PyMuPDF还提供了许多其他功能,如合并PDF、添加注释、提取图像等等。您可以根据需要查阅PyMuPDF的文档以了解更多详细信息和用法。

咱也不装,这都是chatgpt写的....但是很对,是有用的。

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

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

相关文章

39 | selenium基础架构,UI测试架构

什么是测试基础架构? 测试基础架构指的是,执行测试的过程中用到的所有基础硬件设施以及相关的软件设施。因此,我们也把测试基础架构称之为广义的测试执行环境。通常来讲,测试基础架构主要包括以下内容: 执行测试的机器…

机器学习第十一课--K-Means聚类

一.聚类的概念 K-Means算法是最经典的聚类算法,几乎所有的聚类分析场景,你都可以使用K-Means,而且在营销场景上,它就是"King",所以不管从事数据分析师甚至是AI工程师,不知道K-Means是”不可原谅…

MATLAB | R2023b更新了哪些好玩的东西?

R2023b来啦!!废话不多说看看新版本有啥有趣的玩意和好玩的特性叭!!依旧把绘图放最前面叭,有图的内容看的人多。。 1 调色板 MATLAB终于不只有一套配色了,诸君且看: y [3 5 7 9 11; 2 5 6 8 1…

uniapp确认提示框;uniapp判断输入框值是否符合正常手机号,身份证号

确认提示框 UniApp 中&#xff0c;你可以使用 uni.showModal 方法来创建确认提示框。以下是一个示例&#xff1a; <template><view class"container"><button click"showAuthModal">显示确认提示框</button></view> </…

【问题记录】解决“命令行终端”和“Git Bash”操作本地Git仓库时出现 中文乱码 的问题!

环境 Windows 11 家庭中文版git version 2.41.0.windows.1 问题情况 在使用 “命令行终端” 和 “Git Bash” 在本地Git仓库敲击命令时&#xff0c;对中文名称文件显示一连串的数字&#xff0c;如下所示&#xff1a;这种情况通常是由于字符编码设置不正确所引起的 解决办法 设置…

什么是分布式锁?他解决了什么样的问题?

相信对于朋友们来说&#xff0c;锁这个东西已经非常熟悉了&#xff0c;在说分布式锁之前&#xff0c;我们来聊聊单体应用时候的本地锁&#xff0c;这个锁很多小伙伴都会用 ✔本地锁 我们在开发单体应用的时候&#xff0c;为了保证多个线程并发访问公共资源的时候&#xff0c;…

网络编程day05(IO多路复用)

今日任务&#xff1a; TCP多路复用的客户端、服务端&#xff1a; 服务端代码&#xff1a; #include <stdio.h> #include <sys/types.h> #include <sys/socket.h> #include <arpa/inet.h> #include <netinet/in.h> #include <unistd.h> …

uniapp 内容展开组件

uni-collapse折叠面板并不符合需求&#xff0c;需要自己写一个。 效果展示&#xff1a; 代码&#xff1a; &#xff08;vue3版本&#xff09; <template><view class"collapse-view"><view class"collapse-content"><swiper:autopl…

OpenHarmony应用核心技术理念与需求机遇简析

一、核心技术理念 图片来源&#xff1a;OpenHarmony官方网站 二、需求机遇简析 新的万物互联智能世界代表着新规则、新赛道、新切入点、新财富机会;各WEB网站、客户端( 苹果APP、安卓APK)、微信小程序等上的组织、企业、商户等;OpenHarmony既是一次机遇、同时又是一次大的挑战&…

word、excel、ppt转为PDF

相关引用对象在代码里了 相关依赖 <dependency><groupId>org.apache.poi</groupId><artifactId>poi-ooxml</artifactId><version>4.0.1</version></dependency> <dependency><groupId>org.apache.poi</group…

好用的记笔记app选哪个?

当你在日常生活中突然获得了一个灵感&#xff0c;或者需要记录会议的重要内容&#xff0c;或者是学校课堂上的笔记&#xff0c;你通常会拿出手机&#xff0c;因为它总是在你身边&#xff0c;随时可用。这时候&#xff0c;一款好的记笔记App可以让你事半功倍。 敬业签是一款全面…

「UG/NX」Block UI 从列表选择部件SelectPartFromList

✨博客主页何曾参静谧的博客📌文章专栏「UG/NX」BlockUI集合📚全部专栏「UG/NX」NX二次开发「UG/NX」BlockUI集合「VS」Visual Studio「QT」QT5程序设计「C/C+&#

Qt5开发及实例V2.0-第十五章-Qt单元测试框架

Qt5开发及实例V2.0-第十五章-Qt单元测试框架 第15章 Qt 5单元测试框架15.1 QTestLib框架15.2 简单的Qt单元测试15.3 数据驱动测试15.4 简单性能测试 本章相关例程源码下载1.Qt5开发及实例_CH1501.rar 下载2.Qt5开发及实例_CH1502.rar 下载3.Qt5开发及实例_CH1503.rar 下载4.Qt5…

构建个人云存储:本地电脑搭建SFTP服务器,开启公网访问,轻松共享与管理个人文件!

本地电脑搭建SFTP服务器&#xff0c;并实现公网访问 文章目录 本地电脑搭建SFTP服务器&#xff0c;并实现公网访问1. 搭建SFTP服务器1.1 下载 freesshd 服务器软件1.3 启动SFTP服务1.4 添加用户1.5 保存所有配置 2. 安装SFTP客户端FileZilla测试2.1 配置一个本地SFTP站点2.2 内…

stm32之GPIO库函数点灯分析

stm32官方为了方便开发者&#xff0c;利用CubeMX 生成HAL库有关的C代码。HAL库就是硬件抽象层(hardware abstraction layer)&#xff0c;生成一系列的函数帮助我们快速生成工程&#xff0c;脱离复杂的寄存器配置。stm32相对于51来功能强大&#xff0c;但是寄存器的数量也不是一…

C++核心编程——P22-练习案例2:点和圆的关系

在一个类中可以让另一个类作为这个类的成员 #include<iostream> using namespace std; class Point//点类 { public:void setx(int x){c_x x;}int getx(){return c_x;}void sety(int y){c_y y;}int gety(){return c_y;}//建议将属性设置为私有&#xff0c;对外提供接口…

Django(20):信号机制

目录 信号的工作机制信号的应用场景两个简单例子Django常用内置信号如何放置信号监听函数代码自定义信号第一步&#xff1a;自定义信号第二步&#xff1a;触发信号第三步&#xff1a;将监听函数与信号相关联 信号的工作机制 Django 框架包含了一个信号机制&#xff0c;它允许若…

pcl--第十二节 2D和3D融合和手眼标定

2D&3D融合 概述 截止目前为止&#xff0c;我们学习了机器人学&#xff0c;学习了2D和3D视觉算法。我们也学习了2D相机(图像数据的来源)和3D相机(点云数据的来源)工作原理。 实际上&#xff0c;我们最终要做的&#xff0c;是一个手眼机器人系统。在这个系统里&#xff0c…

pytorch学习------常见的优化算法

优化算法 优化算法就是一种调整模型参数更新的策略&#xff0c;在深度学习和机器学习中&#xff0c;我们常常通过修改参数使得损失函数最小化或最大化。 优化算法介绍 1、梯度下降算法&#xff08;batch gradient descent BGD&#xff09; 每次迭代都需要把所有样本都送入&…

宝塔composer 安装laravel依赖出现的问题

环境宝塔、PHP版本8.0.2、laravel9 问题1&#xff1a;PHP Fatal error: Uncaught Error: Call to undefined function Composer\XdebugHandler\putenv() 办法&#xff1a;把PHP版本disable_functions这个中的putenv去掉&#xff0c;这个意思就是putenv被PHP对应的版本禁用了&…