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

2023-09-22 15:26:09

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

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


脚本代码

先安装PyMuPDF库,

pip install PyMuPDF

代码: 

import fitz  # PyMuPDF

def 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 fitz
    
    def 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 text
    
    pdf_text = extract_text_from_pdf("your_pdf.pdf")
    print(pdf_text)
    

  2. 获取页面信息

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

    import fitz
    
    def 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 fitz
    
    def 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 fitz
    
    def 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写的....但是很对,是有用的。

更多推荐

检测特定IP端口是否可达

目录背景方法方法一:使用nmap方法二:使用telnet背景日常工作中经常需要判定某个IP的端口是否可达,之前一直使用telnet工具,但今天遇到在某特定的设备上没有该工具(软件源里也没有,无法安装)的问题,于是以此契机稍微研究了下其他的检测方式,整理在此。方法方法一:使用nmap首先确保计算机已安装nmap。然后在终

Java POI 读取 大数据量的Excel 实操

JavaPOI读取大数据量(超过10W行)的excel的操作0.问题抛出在使用poi进行excel文件读取操作的时候,如果文件包含的数据量很大,比如包含了10万行的数据,那么在使用【Workbookworkbook2=WorkbookFactory.create(inputStrem);】这种形式读取的时候就会发现异常

线性代数的本质(五)——矩阵的运算

文章目录矩阵的运算矩阵的转置方阵的运算初等矩阵分块矩阵逆矩阵矩阵的秩广义逆矩阵矩阵的运算矩阵的转置转置:矩阵AAA的行列互换得到的矩阵称为AAA的转置(transpose),记作ATA^TAT。性质:矩阵转置运算满足下列性质:(A+B)T=AT+BT(A+B)^T=A^T+B^T(A+B)T=AT+BT(AT)T=A(

杂记 | Langchain中few-shot提示词模板的使用(给提示词添加示例)

文章目录01普通的提示词模板02few-shot提示词模板Langchain是一个集成多个大语言模型的开源框架,可以使用它来快速开发大语言模型应用。本文的代码使用到的模块:fromtypingimportList,DictfromlangchainimportPromptTemplate,FewShotPromptTe

Itsycal for Mac: 精美日历软件的魅力之旅

在这个数字化时代,管理时间和日程变得尤为重要。macOS平台上的Itsycal日历软件可以帮助你有效管理你的日程和时间。Itsycal是一款轻量级且直观的日历应用程序,专门为macOS用户设计。通过这款软件,你可以轻松查看、管理和跟踪你的日常活动和重要日期。下面是一些Itsycal为macOS用户带来的独特功能:简洁直

第十章 数据库恢复技术

第十章数据库恢复技术10.1事务的基本概念事务事务是用户定义的一个数据库操作序列,这些操作要么全做,要么全不做,是一个不可分割的工作单位。例事务的特性(ACID特性(ACIDproperties))原子性(Atomicity)事务是数据库的逻辑工作单位,事务中包括的诸操作要么都做,要么都不做。一致性(Consisten

微软在Windows 11推出Copilot,将DALL-E 3集成在Bing!

美东时间9月21日,微软在美国纽约曼哈顿举办产品发布会,生成式AI成为重要主题之一。微软表示,Copilot将于9月26日在Windows11中推出;Microsoft365Copilot将于11月1日向企业客户全面推出;将OpenAI最新的文本生成图片产品DALL.E3集成在Bing和设计平台Designer中等。简

通过实现HandlerInterceptor接口实现一个拦截器

1.简介web应用开发中,拦截器的应用场景非常广泛,主要用于:登陆验证:提取request中请求头携带的token信息;鉴权:判断该用户是否有权限访问某个资源日志记录:记录该handler的入和出性能监控、通用行为等等一些其它的操作。2.spring中使用拦截器的方式spring为我们提供了一个接口:HandlerIn

Python中转换IP地址格式的方法

IP地址一般用字符串“XXX.XXX.XXX.XXX”表示。例如,“192.168.147.1”、“127.0.0.1”等。在确定主机IP地址段时,需要将IP地址的每段转换成数字。1inet_aton()方法该方法的使用方法是socket.inet_aton(ip_string)其中,参数ip_string是字符串类型

GB28181协议-SDP详解

SDP协议SDP全称是SessionDescriptionProtocol,翻译过来就是描述会话的协议。主要用于两个会话实体之间的媒体协商。SDP描述由许多文本行组成,文本行的格式为<类型>=<值>,表示为key=value;SIP负责建立和释放会话,一般来说,会话中包含相关的媒体,比如视频和音频。媒体数据是由SDP描

别问怎么下载,金蝶云星空SaaS BI系统不用下载

国产自研的奥威软件-金蝶云星空SaaSBI,不下载不安装,从浏览器上一键注册登录即可使用:一键点击下载金蝶云星空方案,执行后,BI系统将基于金蝶云星空内的数据与方案自带的BI报表,智能计算分析指标,生成数十张BI数据可视化分析报表。奥威-金蝶云星空SaaSBI是一款强大的在线商业智能工具,它通过和金蝶云星空方案的紧密合

热文推荐