展开菜单
首页 精品内容 本月促销 装机必备 Windows PDF教程 macOS软件 IOS软件 Android AI 专题
全部分类

当前位置:

首页 > 编程开发 > 使用PyMuPDF进行PDF处理的方法和步骤

使用PyMuPDF进行PDF处理的方法和步骤

PDF Expert for Mac 2 简体中文
PDF Expert for Mac 2 简体中文

是由Adobe公司发明的,一种非依附于软件、硬件和操作系统呈现文档的文件格式。

¥299
2026-08-22
Mac软件 读写虚拟 本月促销
立即下载

大家好,我是Python人工智能技术一、PyMuPDF简介1.介绍在介绍PyMuPDF之前,先来了解一下MuPDF,从命名形式中就可以看出,PyMuPDF是MuPDF的Python接口形式。MuPDFMuPDF是一个轻量级的PDF、XPS和电子书查看器。MuPDF由软件库、命令行工具和各种平台的查看器组成。MuPDF中的渲染器专为高质量抗锯齿图形量身定制。它以精确到像素的几分之一内的度量和间距呈现文本,以在屏幕上再现打印页面的外观时获得最高保真度。这个观察器很小,速度很快,但是很完整。它支持多种

本文目录

    使用PyMuPDF进行PDF处理的方法和步骤

    大家好,我是Python人工智能技术

    一、PyMuPDF简介

    1. 介绍

    在介绍PyMuPDF之前,先来了解一下MuPDF,从命名形式中就可以看出,PyMuPDF是MuPDF的Python接口形式。

    MuPDF

    MuPDF 是一个轻量级的 PDF、XPS和电子书查看器。MuPDF 由软件库、命令行工具和各种平台的查看器组成。

    MuPDF 中的渲染器专为高质量抗锯齿图形量身定制。它以精确到像素的几分之一内的度量和间距呈现文本,以在屏幕上再现打印页面的外观时获得最高保真度。

    这个观察器很小,速度很快,但是很完整。它支持多种文档格式,如PDF、XPS、OpenXPS、CBZ、EPUB和FictionBook 2。您可以使用移动查看器对PDF文档进行注释和填写表单(这个功能很快也将应用于桌面查看器)。

    命令行工具允许您注释、编辑文档,并将文档转换为其他格式,如HTML、SVG、PDF和CBZ。您还可以使用Javascript编写脚本来操作文档。

    PyMuPDF

    PyMuPDF(当前版本1.18.17)是支持MuPDF(当前版本1.18.*)的Python绑定。

    使用PyMuPDF,你可以访问扩展名为“.pdf”、“.xps”、“.oxps”、“.cbz”、“.fb2”或“.epub”。此外,大约10种流行的图像格式也可以像文档一样处理:“.png”,“.jpg”,“.bmp”,“.tiff”等。

    二. 功能

    对于所有支持的文档类型可以:

    • 解密文件
    • 访问元信息、链接和书签
    • 以栅格格式(PNG和其他格式)或矢量格式SVG呈现页面
    • 搜索文本
    • 提取文本和图像
    • 转换为其他格式:PDF, (X)HTML, XML, JSON, text
    • 对于PDF文档,存在大量的附加功能:它们可以创建、合并或拆分。页面可以通过多种方式插入、删除、重新排列或修改(包括注释和表单字段)。
    • 可以提取或插入图像和字体
    • 完全支持嵌入式文件
    • pdf文件可以重新格式化,以支持双面打印,色调分离,应用标志或水印
    • 完全支持密码保护:解密、加密、加密方法选择、权限级别和用户/所有者密码设置
    • 支持图像、文本和绘图的 PDF 可选内容概念
    • 可以访问和修改低级 PDF 结构
    • 命令行模块"python -m fitz…"具有以下特性的多功能实用程序
    • 加密/解密/优化
    • 创建子文档
    • 文档连接
    • 图像/字体提取
    • 完全支持嵌入式文件
    • 保存布局的文本提取(所有文档)

    新:布局保存文本提取!

    脚本fitzcliy .py通过子命令“gettext”提供不同格式的文本提取。特别有趣的当然是布局保存,它生成的文本尽可能接近原始物理布局,周围有图像的区域,或者在表格和多列文本中复制文本。

    三、安装

    PyMuPDF可以从源码安装,也可以从wheels安装。

    对于Windows, Linux和Mac OSX平台,在PyPI的下载部分有wheels。这包括Python 64位版本3.6到3.9。Windows版本也有32位版本。从最近开始,Linux ARM架构也出现了一些问题——查找平台标签manylinux2014_aarch64。

    除了标准库,它没有强制性的外部依赖项。只有在安装了某些包时,才会有一些不错的方法:

    • Pillow:当使用Pixmap.pil_save()和 Pixmap.pil_tobytes()时需要
    • fontTools:当使用Document.subset_fonts()时需要
    • pymupdf-fonts 是一个不错的字体选择,可以用于文本输出方法

    使用pip安装命令:

    pip install PyMuPDF

    导入库:

    import fitz

    关于命名fitz的说明

    这个库的标准Python导入语句是import fitz。这是有历史原因的:

    MuPDF的原始渲染库被称为Libart。

    在Artifex软件获得MuPDF项目后,开发的重点转移到编写一种新的现代图形图书馆称为“Fitz”。Fitz最初是作为一个研发项目,以取代老化的Ghostscript图形库,但却成为了MuPDF的渲染引擎(引用自维基百科)。

    四、使用方法

    1. 导入库,查看版本

    import fitz
    print(fitz.__doc__)
    PyMuPDF 1.18.16: Python bindings for the MuPDF 1.18.0 library.
    Version date: 2021-08-05 00:00:01.
    Built for Python 3.8 on linux (64-bit).

    2. 打开文档

    doc = fitz.open(filename)

    这将创建Document对象doc。文件名必须是一个已经存在的文件的python字符串。

    也可以从内存数据打开文档,或创建新的空PDF。您还可以将文档用作上下文管理器。

    3. Document的方法和属性

    方法/属性

    描述

    ​​Document.page_count​​

    页数 (int)

    ​​Document.metadata​​

    元数据 (dict)

    ​​Document.get_toc()​​

    获取目录 (list)

    ​​Document.load_page()​​

    读取页面

    示例:

    >>> doc.count_page
    1
    >>> doc.metadata
    {'format': 'PDF 1.7',
    'title': '',
    'author': '',
    'subject': '',
    'keywords': '',
    'creator': '',
    'producer': '福昕阅读器PDF打印机 版本 10.0.130.3456',
    'creationDate': "D:20210810173328+08'00'",
    'modDate': "D:20210810173328+08'00'",
    'trapped': '',
    'encryption': None}

    4. 获取元数据

    PyMuPDF完全支持标准元数据。Document.metadata是一个具有以下键的Python字典。

    它适用于所有文档类型,但并非所有条目都始终包含数据。元数据字段为字符串,如果未另行指示,则为无。还要注意的是,并非所有数据都始终包含有意义的数据——即使它们不是一个都没有。另外,搜索公众号Java架构师技术后台回复“面试题”,获取一份惊喜礼包。

    Key

    Value

    producer

    producer (producing software)

    format

    format: ‘PDF-1.4’, ‘EPUB’, etc.

    encryption

    encryption method used if any

    author

    author

    modDate

    date of last modification

    keywords

    keywords

    title

    title

    creationDate

    date of creation

    creator

    creating application

    subject

    subject

    5. 获取目标大纲

    toc = doc.get_toc()

    6. 页面(Page)

    页面处理是MuPDF功能的核心。

    • 您可以将页面呈现为光栅或矢量(SVG)图像,可以选择缩放、旋转、移动或剪切页面。
    • 您可以提取多种格式的页面文本和图像,并搜索文本字符串。
    • 对于PDF文档,可以使用更多的方法向页面添加文本或图像。

    首先,必须创建一个页面Page。这是Document的一种方法:

    page = doc.load_page(pno) # loads page number 'pno' of the document (0-based)
    page = doc[pno] # the short form

    这里可以使用任何整数-inf

    更高级的方法是将文档用作页面的迭代器:

    for page in doc:
     # do something with 'page'
    # ... or read backwards
    for page in reversed(doc):
     # do something with 'page'
    # ... or even use 'slicing'
    for page in doc.pages(start, stop, step):
     # do something with 'page'
    • 接下来,主要介绍Page的常用操作!

    a. 检查页面的链接、批注或表单字段

    使用某些查看器软件显示文档时,链接显示为==“热点区域”==。如果您在光标显示手形符号时单击,您通常会被带到该热点区域中编码的标记。以下是如何获取所有链接:

    # get all links on a page
    links = page.get_links()

    links是一个Python字典列表。

    还可以作为迭代器使用:

    for link in page.links():
     # do something with 'link'

    如果处理PDF文档页面,还可能存在注释(Annot)或表单字段(Widget),每个字段都有自己的迭代器:

    for annot in page.annots():
     # do something with 'annot'
    for field in page.widgets():
     # do something with 'field'

    b. 呈现页面

    此示例创建页面内容的光栅图像:

    pix = page.get_pixmap()

    pix是一个Pixmap对象,它(在本例中)包含页面的RGB图像,可用于多种用途。

    方法Page.get_pixmap()提供了许多用于控制图像的变体:分辨率、颜色空间(例如,生成灰度图像或具有减色方案的图像)、透明度、旋转、镜像、移位、剪切等。

    例如:创建RGBA图像(即,包含alpha通道),指定pix=page.get_pixmap(alpha=True)。

    Pixmap包含以下引用的许多方法和属性。其中包括整数宽度、高度(每个像素)和跨距(一个水平图像行的字节数)。属性示例表示表示图像数据的矩形字节区域(Python字节对象)。

    还可以使用page.get_svg_image()创建页面的矢量图像。

    c. 将页面图像保存到文件中

    我们可以简单地将图像存储在PNG文件中:

    pix.save("page-%i.png" % page.number)

    d. 提取文本和图像

    我们还可以以多种不同的形式和细节级别提取页面的所有文本、图像和其他信息:

    text = page.get_text(opt)

    对opt使用以下字符串之一以获取不同的格式:

    • "text":(默认)带换行符的纯文本。无格式、无文字位置详细信息、无图像
    • "blocks":生成文本块(段落)的列表
    • "words":生成单词列表(不包含空格的字符串)
    • "html":创建页面的完整视觉版本,包括任何图像。这可以通过internet浏览器显示
    • "dict"/"json":与HTML相同的信息级别,但作为Python字典或resp.JSON字符串。
    • "rawdict"/"rawjson":"dict"/"json"的超级集合。它还提供诸如XML之类的字符详细信息。
    • "xhtml":文本信息级别与文本版本相同,但包含图像。
    • "xml":不包含图像,但包含每个文本字符的完整位置和字体信息。使用XML模块进行解释。

    e. 搜索文本

    您可以找到某个文本字符串在页面上的确切位置:

    areas = page.search_for("mupdf")

    这将提供一个矩形列表,每个矩形都包含一个字符串“mupdf”(不区分大小写)。您可以使用此信息来突出显示这些区域(仅限PDF)或创建文档的交叉引用。

    7. PDF操作

    PDF是唯一可以使用PyMuPDF修改的文档类型。其他文件类型是只读的。

    但是,您可以将任何文档(包括图像)转换为PDF,然后将所有PyMuPDF功能应用于转换结果,Document.convert_to_pdf()。

    Document.save()始终将PDF以其当前(可能已修改)状态存储在磁盘上。

    通常,您可以选择是保存到新文件,还是仅将修改附加到现有文件(“增量保存”),这通常要快得多。

    下面介绍如何操作PDF文档。

    a. 修改、创建、重新排列和删除页面

    有几种方法可以操作所谓页面树(描述所有页面的结构):

    • PDF:Document.delete_page()和Document.delete_pages()删除页面
    • Document.copy_page()、Document.fullcopy_page()和Document.move_page()将页面复制或移动到同一文档中的其他位置。
    • Document.select()将PDF压缩到选定页面,参数是要保留的页码序列。这些整数都必须在0<=i
    • 因此,您可以轻松地使用创建新的PDF:
    • 第一页或最后10页
    • 仅奇数页或偶数页(用于双面打印)
    • 包含或不包含给定文本的页
    • 颠倒页面顺序
    • 保存的新文档将包含仍然有效的链接、注释和书签(i.a.w.指向所选页面或某些外部资源)。
    • Document.insert_page()和Document.new_page()插入新页面。
    • 此外,页面本身可以通过一系列方法进行修改(例如页面旋转、注释和链接维护、文本和图像插入)。

    b. 连接和拆分PDF文档

    方法Document.insert_pdf()在不同的pdf文档之间复制页面。下面是一个简单的joiner示例(doc1和doc2在PDF中打开):

    # append complete doc2 to the end of doc1
    doc1.insert_pdf(doc2)

    下面是一个拆分doc1的片段。它将创建第一页和最后10页的新文档:

    doc2 = fitz.open() # new empty PDF
    doc2.insert_pdf(doc1, to_page = 9) # first 10 pages
    doc2.insert_pdf(doc1, from_page = len(doc1) - 10) # last 10 pages
    doc2.save("first-and-last-10.pdf")

    c. 保存

    Document.save()将始终以当前状态保存文档。

    您可以通过指定选项incremental=True将更改写回原始PDF。这个过程(通常)非常快,因为更改会附加到原始文件,而不会完全重写它。

    d. 关闭

    在程序继续运行时,通常需要“关闭”文档以将底层文件的控制权交给操作系统。

    这可以通过Document.close()方法实现。除了关闭基础文件外,还将释放与文档关联的缓冲区。

    本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系bd@zhengruan.com
    作者最新文章
    编程开发 Python PDF
    相关文章 更多
    精品专题 更多
    装机必备

    正软商城装机必备专区,精选办公、浏览器、安全防护、影音播放、压缩解压、设计创作和系统工具等电脑常用正版软件,帮助用户快速完成新电脑软件配置。

    Windows

    正软商城Windows软件专区,汇集适用于Windows电脑的办公、设计、安全防护、影音播放、开发工具和系统优化软件,提供软件介绍、系统要求、正版授权及购买下载服务。

    PDF教程

    正软商城PDF教程频道提供PDF编辑、转换、合并、拆分、压缩及格式处理方法,同时介绍常用PDF软件和工具的使用技巧。

    macOS软件

    正软商城macOS软件专区,精选适用于Mac电脑的办公、设计、影音、效率、开发和系统工具,提供软件功能介绍、macOS兼容版本、正版授权及购买下载服务。

    IOS软件

    正软商城iOS软件专区,精选适用于iPhone和iPad的办公、学习、影音、设计、效率及AI应用,提供功能介绍、适用设备、系统要求和正版获取方式等信息。

    AI

    正软商城AI软件专区,汇集AI写作、AI绘画、AI视频、AI办公、AI编程、AI翻译、智能客服和数据分析等人工智能工具,提供功能介绍、适用平台、收费方式及正版购买信息。

    Mac软件 更多
    Aperty macOS版
    Aperty macOS版

    Aperty 是 Skylum 推出的 AI 人像修图软件,支持自然肤质修饰、瑕疵处理、面部与身体调整、预设及批量同步。

    火山引擎 网页版
    火山引擎 网页版

    火山引擎是字节跳动旗下企业级云与AI服务平台。聚焦大模型核心能力,依托字节自研豆包多模态大模型,凭借火山方舟一站式平台,提供模型精调、推理部署、智能应用搭建等全链路服务,结合高性能AI算力,助力各行业快速落地大模型数字化与智能化应用。

    立刻MV 网页版
    立刻MV 网页版

    立刻MV 面向音乐人、内容创作者和品牌团队,帮助用户低成本完成歌曲 MV、歌词视频、AI 分镜、图生视频与最终合成。

    蛙蛙写作 网页版
    蛙蛙写作 网页版

    蛙蛙写作 AI 创作工具,覆盖小说、剧本、文案,一键生成文稿,打通文字转视频全流程,高效解决创作难题。

    讯飞智作 网页版
    讯飞智作 网页版

    讯飞智作是一款基于语音合成技术、虚拟人驱动技术与数字人形象声音构建能力的 AI 数字人音视频创作平台。

    超级简历WonderCV 网页版
    超级简历WonderCV 网页版

    超级简历WonderCV是面向应届生和AI小白的智能求职平台,覆盖简历、面试与职业规划。

    音述AI 网页版
    音述AI 网页版

    音述AI,是一个以“用声音述说故事”为核心的 AI 音乐创作与声音分享社区。

    AionClaw macOS版
    AionClaw macOS版

    AionClaw 是可在桌面端运行的任务型 AI 助手,通过数字专家与技能市场组合办公、创作、数据和开发能力。

    Loomy macOS版
    Loomy macOS版

    Loomy 是科大讯飞推出的桌面 AI 助手,可通过对话、任务与工作目录协助处理办公、内容创作和资料整理。

    AirBuddy 3 macOS版
    AirBuddy 3 macOS版

    AirBuddy 3 是面向 macOS 的蓝牙外设增强工具,可集中查看 AirPods、Beats 与苹果设备电量,提供快速连接、播放控制、电量提醒、桌面小组件和多台 Mac 外设接力等功能。

    AirServer macOS版
    AirServer macOS版

    AirServer macOS版可把 Mac 转换为无线投屏接收端,通过 AirPlay 或 Google Cast 接收手机、平板和电脑画面,并支持多设备同时连接、高清镜像及会话录制,适合家庭娱乐、课堂教学、会议演示和应用展示。

    AnyDesk macOS版
    AnyDesk macOS版

    AnyDesk macOS版是一款适用于远程办公、设备维护和客户支持的远程桌面工具,可连接并操作异地计算机,支持文件传输、无人值守访问、会话权限控制及跨平台协作。

    WINDOWS 更多
    Maya(Autodesk Maya) Windows版
    Maya(Autodesk Maya) Windows版

    Autodesk Maya 是面向影视、电视、动画和游戏行业的专业三维制作软件,集多边形与 NURBS 建模、角色绑定、关键帧和动作捕捉动画、Bifrost 特效模拟、材质开发及 Arnold 渲染于一体,

    Aperty Windows版
    Aperty Windows版

    Aperty 是 Skylum 推出的 AI 人像修图软件,支持自然肤质修饰、瑕疵处理、面部与身体调整、预设及批量同步。

    火山引擎 网页版
    火山引擎 网页版

    火山引擎是字节跳动旗下企业级云与AI服务平台。聚焦大模型核心能力,依托字节自研豆包多模态大模型,凭借火山方舟一站式平台,提供模型精调、推理部署、智能应用搭建等全链路服务,结合高性能AI算力,助力各行业快速落地大模型数字化与智能化应用。

    立刻MV 网页版
    立刻MV 网页版

    立刻MV 面向音乐人、内容创作者和品牌团队,帮助用户低成本完成歌曲 MV、歌词视频、AI 分镜、图生视频与最终合成。

    蛙蛙写作 网页版
    蛙蛙写作 网页版

    蛙蛙写作 AI 创作工具,覆盖小说、剧本、文案,一键生成文稿,打通文字转视频全流程,高效解决创作难题。

    讯飞智作 网页版
    讯飞智作 网页版

    讯飞智作是一款基于语音合成技术、虚拟人驱动技术与数字人形象声音构建能力的 AI 数字人音视频创作平台。

    超级简历WonderCV 网页版
    超级简历WonderCV 网页版

    超级简历WonderCV是面向应届生和AI小白的智能求职平台,覆盖简历、面试与职业规划。

    音述AI 网页版
    音述AI 网页版

    音述AI,是一个以“用声音述说故事”为核心的 AI 音乐创作与声音分享社区。

    AionClaw Windows版
    AionClaw Windows版

    AionClaw 是可在桌面端运行的任务型 AI 助手,通过数字专家与技能市场组合办公、创作、数据和开发能力。

    Loomy Windows版
    Loomy Windows版

    Loomy 是科大讯飞推出的桌面 AI 助手,可通过对话、任务与工作目录协助处理办公、内容创作和资料整理。

    讯飞绘文 网页版
    讯飞绘文 网页版

    讯飞绘文网页版是科大讯飞推出的AI图文创作与内容运营工具,覆盖热点选题、文章生成、稿件校对、智能配图、排版发布和数据复盘等环节,适合自媒体创作者及内容团队在线使用。

    AirServer Windows版
    AirServer Windows版

    AirServer Windows版可把电脑变成AirPlay、Google Cast和Miracast无线投屏接收端,适合会议演示、课堂教学及家庭大屏分享。发送设备通常无需另装客户端,并可同时接收和智能排列多个镜像会话。

    即将离开本站
    您即将前往第三方网站,请确认是否继续?