总结用Python 操作 PDF 的几种方法

1. 简介

Portable Document Format (PDF) 是一种广泛使用的文档格式,它能够保留文档的原始格式并且在各种设备、操作系统和应用程序之间进行交换。在许多情况下,我们需要使用 Python 操作 PDF 文件,比如从 PDF 提取文本、图像等。Python 提供了许多库来满足这些需求,本文将介绍几种常用的 Python 操作 PDF 的方法。

2. PyPDF2

2.1 安装

PyPDF2 是一个用 Python 编写的库,它能够操作 PDF 文件。安装 PyPDF2,可以使用 pip install 命令:

pip install PyPDF2

2.2 从 PDF 提取文本

使用 PyPDF2 可以很容易地从 PDF 提取文本。以下是一个简单的例子:

import PyPDF2

with open('example.pdf', 'rb') as pdf_file:

pdf_reader = PyPDF2.PdfFileReader(pdf_file)

for page in pdf_reader.pages:

print(page.extractText())

在上面的例子中,我们首先打开 PDF 文件,然后创建一个 PyPDF2.PdfFileReader 对象,并循环遍历 PDF 的每一页,对每一页调用 extractText() 方法来提取其中的文本。

2.3 合并 PDF

使用 PyPDF2 合并 PDF 非常简单。以下是一个简单的例子:

import PyPDF2

pdf_merger = PyPDF2.PdfFileMerger()

pdf_merger.append('document1.pdf')

pdf_merger.append('document2.pdf')

with open('merged_document.pdf', 'wb') as output_file:

pdf_merger.write(output_file)

在上面的例子中,我们首先创建一个 PyPDF2.PdfFileMerger 对象,然后使用 append() 方法添加要合并的 PDF 文件。最后,使用 write() 方法将合并后的 PDF 写入输出文件。

3. pdftotext

3.1 安装

pdftotext 是一个命令行工具,它能够将 PDF 文档转换为文本格式。在使用 pdftotext 前,需要先安装它。如果您使用的是 Linux 或 Mac,可以使用以下命令进行安装:

sudo apt-get install poppler-utils

如果您使用的是 Windows,可以从以下网站下载二进制文件并进行安装:

https://github.com/novapdf/pdf-to-text/releases

3.2 从 PDF 提取文本

使用 pdftotext 可以很容易地从 PDF 提取文本。以下是一个简单的例子:

import subprocess

subprocess.run(['pdftotext', '-layout', 'example.pdf'])

with open('example.txt', 'r') as text_file:

text = text_file.read()

print(text)

在上面的例子中,我们使用 subprocess.run() 函数来运行 pdftotext 命令,并将其输出写入到名为 example.txt 的文件中。然后,我们读取 example.txt 文件的内容并将其打印出来。

4. PyMuPDF

4.1 安装

PyMuPDF 是一个用 Python 编写的库,它可以对 PDF 进行多种操作,包括提取文本、图像等。

要安装 PyMuPDF,可以使用 pip install 命令:

pip install PyMuPDF

4.2 从 PDF 提取文本

使用 PyMuPDF 可以很容易地从 PDF 提取文本。以下是一个简单的例子:

import fitz

pdf_document = fitz.open('example.pdf')

text = ''

for page in pdf_document:

text += page.getText()

print(text)

在上面的例子中,我们首先打开 PDF 文件,然后循环遍历 PDF 的每一页,对每一页调用 getText() 方法来提取其中的文本。

4.3 提取 PDF 中的图像

PyMuPDF 可以很容易地从 PDF 文件中提取图像。以下是一个简单的例子:

import fitz

pdf_document = fitz.open('example.pdf')

for page in pdf_document:

for image in page.getImageList():

xref = image[0]

pix = fitz.Pixmap(pdf_document, xref)

if pix.n < 5:

pix.writePNG('page-%s-image-%s.png' % (page.number, xref))

else:

pix1 = fitz.Pixmap(fitz.csRGB, pix)

pix1.writePNG('page-%s-image-%s.png' % (page.number, xref))

pix1 = None

pix = None

在上面的例子中,我们首先打开 PDF 文件,然后循环遍历 PDF 的每一页。对于每一页,我们获取其包含的所有图像,并使用 Pixmap() 方法将其转换为 Fitz 图像。最后,我们将每个图像保存为 PNG 文件。

总结

Python 提供了许多库来操作 PDF 文件,选择合适的库取决于您的需求。PyPDF2 是一种简单易用的库,适用于大多数 PDF 操作。pdftotext 是一个命令行工具,适用于快速提取 PDF 中的文本。PyMuPDF 是一个功能强大的库,适用于处理复杂的 PDF 文件。

后端开发标签