python

关注公众号 jb51net

关闭
首页 > 脚本专栏 > python > Python PyMuPDF操作PDF

Python使用PyMuPDF操作PDF的代码示例

作者:morris131

PyMuPDF,也被称为fitz(这是其导入时的常用别名),是一个功能强大的Python库,用于处理PDF和其他文档格式,与 PyPDF2相比,PyMuPDF提供了更多的功能和更好的性能,特别是在处理复杂的PDF文件时,本文给大家介绍了Python使用PyMuPDF操作PDF,需要的朋友可以参考下

安装PyMuPDF

首先,你需要安装PyMuPDF库。你可以使用pip来安装它:

pip install pymupdf

读取PDF文件

读取PDF文件并打印其页数:

import fitz

# 使用pymupdf读取pdf文件
if __name__ == '__main__':
    # 打开 PDF 文件
    doc = fitz.open('example.pdf')

    print(doc.page_count)

提取文本

从PDF文件中提取文本:

import fitz

# 使用Pymupdf读取pdf文本
if __name__ == '__main__':
    # 打开 PDF 文件
    doc = fitz.open('example1.pdf')

    print(doc.load_page(0).get_text())

拆分PDF文件

将PDF文件拆分为两个文件,一个文件包含奇数页,一个文件包含偶数页:

import fitz

# 使用pymupdf将PDF文件拆分为两个文件,一个文件包含奇数页,一个文件包含偶数页:
if __name__ == '__main__':
    # 创建一个 PDF 写入器对象
    odd_writer = fitz.open()
    even_writer = fitz.open()

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

    for page_num in range(doc.page_count):
        if page_num % 2 == 0:
            odd_writer.insert_pdf(doc, from_page=page_num, to_page=page_num)
        else:
            even_writer.insert_pdf(doc, from_page=page_num, to_page=page_num)

    odd_writer.save('example1.pdf')
    even_writer.save('example2.pdf')

合并PDF文件

你可以将多个PDF文件合并为一个:

import fitz

# 使用PymuPDF合并两个pdf文件
if __name__ == '__main__':
    # 打开要合并的 PDF 文件
    pdf_files = ['example1.pdf', 'example2.pdf']

    # 创建一个新的 PDF 文档对象
    merged_doc = fitz.open()

    # 遍历每个要合并的 PDF 文件
    for pdf_file in pdf_files:
        # 打开当前的 PDF 文件
        temp_doc = fitz.open(pdf_file)
        # 将当前 PDF 文件的所有页面添加到合并后的文档中
        for page_num in range(len(temp_doc)):
            merged_doc.insert_pdf(temp_doc, from_page=page_num, to_page=page_num)
        # 关闭当前的 PDF 文件(不需要保存,因为我们只是读取它)
        temp_doc.close()

    # 保存合并后的 PDF 文件
    merged_doc.save("merged.pdf")

裁剪PDF页面

PyPDF2并不直接支持裁剪页面,但你可以通过提取页面的部分内容并创建一个新的页面来实现这一功能。以下是一个简单的示例,演示如何裁剪页面的上半部分:

import fitz

# 使用pymupdf裁剪PDF页面
if __name__ == '__main__':

    # 打开 PDF 文件
    doc = fitz.open("example.pdf")

    # 选择要裁剪的页面(例如第一页)
    page = doc.load_page(0)

    # 定义裁剪区域(矩形,格式为 [x0, y0, x1, y1])
    # 这里我们裁剪页面的上半部分
    rect = [page.rect.x0, page.rect.y0, page.rect.x1, page.rect.y0 + (page.rect.height / 2)]

    # 裁剪页面(这会改变原始页面)
    page.set_cropbox(rect)
    page.clean_contents()  # 清理页面内容(可选,但推荐)

    # 保存修改后的 PDF 文件
    doc.save("cropped_example.pdf")

加密PDF

import fitz

# 使用PyPDF2加密pdf
if __name__ == '__main__':
    doc = fitz.open("example.pdf")

    # 设置加密参数
    doc.save(
        "encrypted.pdf",
        encryption=fitz.PDF_ENCRYPT_AES_256,  # 加密算法
        user_pw="password123",  # 用户密码(打开密码)
        owner_pw="password123",  # 所有者密码
        permissions=0b1111000000,  # 权限标志
        garbage=3,  # 清理冗余数据
        deflate=True,  # 压缩内容
    )

与pypdf2的比较

PyPDF2:

PyMuPDF:

以上就是Python使用PyMuPDF操作PDF的代码示例的详细内容,更多关于Python PyMuPDF操作PDF的资料请关注脚本之家其它相关文章!

您可能感兴趣的文章:
阅读全文