当前位置: 代码网 > it编程>前端脚本>Python > Python使用PyMuPDF操作PDF的代码示例

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

2025年02月28日 Python 我要评论
安装pymupdf首先,你需要安装pymupdf库。你可以使用pip来安装它:pip install pymupdf读取pdf文件读取pdf文件并打印其页数:import fitz# 使用pymupd

安装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:

  • 基础操作:专注于pdf的合并、拆分、页面旋转、加密/解密、添加水印等基础功能。

  • 文本提取:支持简单文本提取,但对复杂布局(如双栏排版、表格)的支持较弱,可能破坏文本顺序。

  • 轻量级:适合轻量级任务,如快速合并多个文档或添加密码保护。

  • 大文件处理:处理大文件(如7000页以上)时速度较慢(需数百秒),内存占用较高。

  • 复杂文档兼容性:对含复杂图形、表单或加密文件的处理可能失败,文本提取易出现乱码。

pymupdf:

  • 全能处理:支持pdf的读取、编辑、合并、拆分,同时能提取文本、图像、表格,甚至支持ocr识别和pdf转图像。

  • 高级功能:可解析表格(保留列表结构)、处理注释和表单、生成pdf/a格式文档,以及通过tesseract集成实现ocr。

  • 多格式支持:兼容pdf、xps、cbz等格式,适用场景更广泛。

  • 大文件处理:基于mupdf引擎,采用优化算法,处理同样文件仅需几秒,支持多线程加速,渲染图像效率更高。

  • 复杂文档兼容性:在处理扫描件、加密文档时表现更稳定,且能保留双栏文本的原始顺序

以上就是python使用pymupdf操作pdf的代码示例的详细内容,更多关于python pymupdf操作pdf的资料请关注代码网其它相关文章!

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com