python
主页 > 脚本 > python >

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

2026-02-17 | 佚名 | 点击:

一、PDF提取文字/转图片

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

1

pip install PyMuPDF

提取文字

1

2

3

4

5

6

7

8

9

10

11

12

13

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坐标

转图片

1

2

3

4

5

6

7

8

9

10

11

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模块

模块安装:

1

pip install PyPDF2

分割、合并PDF

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

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模块

模块安装:

1

pip install PyMuPDF

示例:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

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模块。

原文链接:
相关文章
最新更新