当前位置:数码通 > 摄影

使用Python处理PDF文件的完整代码示例

来源于 数码通 2023-10-01 07:28

本文将详细介绍如何使用Python处理PDF文件。通过Python,我们可以从PDF中提取文本和图像,进行文本搜索、合并、分割、生成PDF等操作。

1。安装 PyPDF2 库

要处理PDF文件,我们需要先安装PyPDF2库。在终端中运行以下命令:

pip 安装 PyPDF2

2。从 PDF 中提取文本

我们可以使用 PyPDF2 库从 PDF 中提取文本。这是示例代码:

导入PyPDF2

def extract_text(文件路径):
    以 open(file_path, 'rb') 作为文件:
        pdf = PyPDF2.PdfFileReader(文件)
        文本=''
        对于范围内的 page_num(pdf.getNumPages()):
            页 = pdf.getPage(page_num)
            文本 += page.extractText()
        返回文本

pdf_text = extract_text('示例.pdf')
打印(pdf_text)

上面的代码定义了一个 extract_text 函数,该函数接受 PDF 文件路径作为参数并返回提取的文本。通过循环处理每个页面,使用 extractText() 方法提取文本,并将其连接成字符串。最后,我们调用该函数并打印结果。

3。从 PDF 中提取图像

除了提取文本之外,我们还可以从PDF中提取图像。这是示例代码:

导入PyPDF2

def extract_images(文件路径):
    以 open(file_path, 'rb') 作为文件:
        pdf = PyPDF2.PdfFileReader(文件)
        图片 = []对于范围内的 page_num(pdf.getNumPages()):
            页 = pdf.getPage(page_num)
            xobjects = page['/Resources']['/XObject'].getObject()
            对于 xobjects 中的 obj:
                如果 xobjects[obj]['/Subtype'] == '/Image':
                    图像.append(xobjects[obj])
        返回图像

pdf_images = extract_images('example.pdf')
对于 i,枚举中的图像(pdf_images):
    以 open(f'image_{i}.jpg', 'wb') 作为文件:
        file.write(image._data)

上面的代码定义了一个 extract_images 函数,该函数接受 PDF 文件路径作为参数并返回提取的图像列表。通过遍历每个页面的XObject,找到Subtype为Image的对象,将其添加到images列表中。最后,我们将每个图像保存为单独的 JPG 文件。

4。在 PDF 中搜索文本

使用PyPDF2库,我们可以搜索PDF中的文本。这是示例代码:

导入PyPDF2

def search_text(文件路径, 关键字):
    以 open(file_path, 'rb') 作为文件:
        pdf = PyPDF2.PdfFileReader(文件)
        页码 = []
        对于范围内的 page_num(pdf.getNumPages()):
            页 = pdf.getPage(page_num)文本 = page.extractText()
            if 文本中的关键字:
                page_numbers.append(page_num + 1)
        返回页码

关键字 = 'Python'
page_numbers = search_text('example.pdf', 关键字)
print(f'关键字“{keyword}”出现在以下页码:{page_numbers}')

上面的代码定义了一个search_text函数,它接受PDF文件路径和关键字作为参数,并返回包含关键字的页码列表。通过循环处理每个页面,提取文本并搜索其中的关键字。如果找到关键字,则将页码添加到 page_numbers 列表中。最后,我们打印包含关键字的页码。

5。合并和分割 PDF 文件

使用PyPDF2库,我们可以合并和拆分PDF文件。这是示例代码:

导入PyPDF2

def merge_pdfs(文件路径, 输出路径):
    合并= PyPDF2.PdfFileMerger()
    对于 file_paths 中的 file_path:
        合并.追加(文件路径)
    合并.write(输出路径)
    合并.close()

def split_pdf(文件路径、页码、输出路径):
    以 open(file_path, 'rb') 作为文件:
        pdf = PyPDF2.PdfFileReader(文件)
        作家= PyPDF2.PdfFileWriter()
        对于 page_numbers 中的 page_num:
            页 = pdf.getPage(page_num - 1)writer.addPage(页面)
        以 open(output_path, 'wb') 作为输出文件:
            writer.write(输出文件)

file_paths = ['文件1.pdf', '文件2.pdf', '文件3.pdf']
输出路径 = '合并.pdf'
merge_pdfs(文件路径,输出路径)

file_path = '示例.pdf'
页码 = [1, 3, 5]
输出路径 = 'split.pdf'
split_pdf(文件路径、页码、输出路径)

上面的代码定义了一个merge_pdfs函数和一个split_pdf函数,分别用于合并和分割PDF文件。 merge_pdfs 函数接受文件路径列表和输出路径作为参数,并将输入 PDF 文件合并到输出文件中。 split_pdf函数接受文件路径、页码列表和输出路径作为参数,将输入PDF文件拆分为指定的页码并将它们存储为输出文件。

6。生成PDF文件

使用PyPDF2库,我们还可以生成PDF文件。这是示例代码:

导入PyPDF2

def create_pdf(文件路径,内容):
    作家= PyPDF2.PdfFileWriter()
    对于内容中的文本:
        页面 = PyPDF2.pdf.PageObject.createBlankPage(无, 595, 842)
        page.mergePage(文本)
        writer.addPage(页面)
    以 open(file_path, 'wb') 作为文件:
        作家.写入(文件)

内容=[]
以 open('text1.txt', 'r') 作为文件:text1 = PyPDF2.pdf.PageObject.createTextObject(m.smtshopping.cn())
    内容.追加(文本1)
以 open('text2.txt', 'r') 作为文件:
    text2 = PyPDF2.pdf.PageObject.createTextObject(m.smtshopping.cn())
    内容.追加(文本2)

create_pdf('输出.pdf', 内容)

上面的代码定义了一个create_pdf函数,它接受文件路径和内容列表作为参数,并生成包含输入内容的PDF文件。循环浏览每段内容,创建一个空白页面,然后将内容合并到该页面中。最后将生成的PDF文件保存到指定路径。

通过上面的示例代码,我们可以发现使用Python处理PDF文件是非常方便的。无论是提取文本、图像,还是执行搜索、合并、分割、生成等操作,都可以通过PyPDF2库轻松实现。

登录后参与评论