python实现PDF文档提取,分割与合并操作

 更新时间:2026年02月16日 08:13:23   作者:夏末蝉未鸣01  
这篇文章主要为大家详细介绍了python进行PDF文档提取,分割与合并等操作的实现方法,文中的示例代码讲解详细,感兴趣的小伙伴可以了解下

一、PDF提取文字/转图片

提取文字和转图片使用的是fitz模块,模块安装:

pip install PyMuPDF

提取文字

import fitz
 

pdf = fitz.open('xxxx.pdf')  # xxxx.pdf是pdf文件名或路径
pages = pdf.page_count  # 获取pdf页数
page = pdf[n]  # 获取pdf第n页,n为页码,从0开始

x = page.rect[2]  # 获取页宽
y = page.rect[3]  # 获取页高

content = page.get_text()  # 提取这一整页的文字
# 获取指定区域文字
content = page.get_text(clip=(x1, y1, x2, y2))  # x1为指定区域左上角x坐标,y1区域左上角y坐标,x2为区域右下角x坐标,y2区域右下角y坐标

转图片

import fitz
 

pdf = fitz.open('xxxx.pdf')  # xxxx.pdf是pdf文件名或路径
page = pdf[n]  # 获取pdf第n页,n为页码,从0开始

z_x = 3  # 宽度放大比例
z_y = 3  # 高度放大比例
mat = fitz.Matrix(z_x, z_y)
pix = page.get_pixmap(matrix=mat)
pix.save('xxxx.png')  # 保存图片为xxxx.png

二、分割、合并PDF文档

2.1 使用PyPDF2模块

模块安装:

pip install PyPDF2

分割、合并PDF

import PyPDF2


pdf = PyPDF2.PdfReader('xxxx.pdf')  # 打开名为xxxx.pdf的PDF文档
pages = pdf.pages  # PDF总页数

writer = PyPDF2.PdfWriter()  # 创建新的PDF变量

writer.add_page(pdf.pages[0])  # 将第1页分割到新的PDF
writer.add_page(pdf.pages[1])  # 将第2页分割到新的PDF
with open('xxxx2.pdf', 'wb') as output_pdf:  # 将分割出来的页保存为新的PDF文件xxxx2.pdf
    writer.write(output_pdf)

writer2 = PyPDF2.PdfWriter()  # 创建新的PDF变量
writer2.add_page(pdf.pages[2])  # 将第3页分割到新的PDF
writer2.add_page(pdf.pages[99])  # 将第100页分割到新的PDF
with open('xxxx3.pdf', 'wb') as output_pdf:  # 将分割出来的页保存为新的PDF文件xxxx3.pdf
    writer2.write(output_pdf)

2.2 使用fitz模块

模块安装:

pip install PyMuPDF

示例:

import fitz


writer = fitz.open()  # 创建一个空白pdf

# 打开1.pdf,并写入新创建的pdf中
pdf = fitz.open('1.pdf') 
writer.insert_pdf(pdf, start_at=writer.page_count)
pdf.close()
# 打开2.pdf,并将第1-3页写入新创建的pdf中(页码从0起算)
pdf = fitz.open('2.pdf')
writer.insert_pdf(pdf, start_at=writer.page_count, from_page=1, to_page=3)
pdf.close()
# 打开3.pdf,并写入新创建的pdf中
pdf = fitz.open('3.pdf')
writer.insert_pdf(pdf, start_at=writer.page_count)
pdf.close()

writer.save('xxxx.pdf')  # 保存为xxxx.pdf
writer.close()

分割跟合并PDF的原理是一样的,前者是打开一个PDF文档,创建并保存为多个PDF文档;后者是打开多个PDF文档,创建并保存为一个PDF文档。

使用PyPDF2模块合并pdf文件时常常遇到乱码问题,因此本人更推荐使用fitz模块。

到此这篇关于python实现PDF文档提取,分割与合并操作的文章就介绍到这了,更多相关python PDF文档操作内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • python根据日期返回星期几的方法

    python根据日期返回星期几的方法

    这篇文章主要介绍了python根据日期返回星期几的方法,涉及Python针对日期模块的相关使用技巧,需要的朋友可以参考下
    2015-07-07
  • Python代码调用执行shell踩坑解决

    Python代码调用执行shell踩坑解决

    这篇文章主要为大家介绍了Python代码调用执行shell,踩过的坑解决方法,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-06-06
  • django drf框架中的user验证以及JWT拓展的介绍

    django drf框架中的user验证以及JWT拓展的介绍

    这篇文章主要介绍了django drf框架中的user验证以及JWT拓展的介绍,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-08-08
  • Python队列、进程间通信、线程案例

    Python队列、进程间通信、线程案例

    这篇文章主要介绍了Python队列、进程间通信、线程,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-10-10
  • Python批量添加水印的优雅实现与进阶

    Python批量添加水印的优雅实现与进阶

    在日常图像处理中,为图片添加水印是一项常见任务,有多种方法和工具可供选择,本文将专注于使用Python语言结合PIL库批量添加水印,感兴趣的可以了解下
    2023-12-12
  • Python 降级的两种实现方法

    Python 降级的两种实现方法

    本文主要介绍了Python 降级的两种实现方法,帮助用户在降级Python时不完全卸载,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2024-12-12
  • 如何在Python 游戏中模拟引力

    如何在Python 游戏中模拟引力

    这篇文章主要介绍了在你的 Python 游戏中模拟引力的操作方法,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-03-03
  • python正则表达式查找和替换内容的实例详解

    python正则表达式查找和替换内容的实例详解

    在本篇文章里小编给大家整理的是一篇关于python正则表达式查找和替换内容的实例详解内容,有兴趣的朋友们可以跟着学习参考下。
    2021-10-10
  • python 使用pandas读取csv文件的方法

    python 使用pandas读取csv文件的方法

    这篇文章主要介绍了python 使用pandas读取csv文件的方法,本文结合示例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-12-12
  • 解决python明明pip安装成功却找不到包的问题

    解决python明明pip安装成功却找不到包的问题

    今天小编就为大家分享一篇解决python明明pip安装成功却找不到包的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-08-08

最新评论