PyMuPDF 1.24.4 中文文档(十三)(5)

本文涉及的产品
密钥管理服务KMS,1000个密钥,100个凭据,1个月
简介: PyMuPDF 1.24.4 中文文档(十三)

PyMuPDF 1.24.4 中文文档(十三)(4)https://developer.aliyun.com/article/1559483


版本 1.16.18 的变更

本版本引入了几个围绕 PDF 文本输出的新功能。目的是简化此任务,同时提供扩展功能。

一个主要的成就是利用 MuPDF 的功能动态选择回退字体,以便在当前字体中找不到字符时使用。这对 Base-14 字体与 CJK 字体(中文、日文、韩文)的组合无缝运作。因此,文本可以包含来自拉丁文、希腊文、俄文、中文、日文和韩文的 任意组合的字符

  • 已修复 问题 #493Pixmap(doc, xref) 现在应正确地反映已加载的图像对象。
  • 已修复 问题 #488。小部件名称现在是可修改的。
  • 新增 新类 Font,表示一个字体。
  • 新增 新类 TextWriter,用作页面上要写入的文本的容器。
  • 新增 Page.writeText() 方法,用于向页面写入一个或多个 TextWriter 对象。

版本 1.16.17 的变更

  • 修复问题 #479。PyMuPDF 现在应更正确地报告图像分辨率。这适用于从图像文件提取的图像或从 PDF 文档中提取的图像,以及从图像创建的像素图。
  • 添加Pixmap.set_dpi(),用于设置图像在 x 和 y 方向的分辨率。

版本 1.16.16 变更

  • 修复问题 #477
  • 修复问题 #476
  • 更改了注释行结束符的颜色,并修复了 ‘Polyline’ / ‘Polygon’ 注释内部颜色的错误。

版本 1.16.14 变更

  • 更改了文本标记注释,以接受除了四边形外的参数,使得现在可以标记两个给定点之间的 文本行
  • 添加Document.scrub(),用于从 PDF 中 删除可能敏感的数据。实现了 #453
  • 添加Annot.blendMode(),用于返回注释的 混合模式
  • 添加Annot.setBlendMode(),用于设置注释的混合模式。解决了问题 #416
  • 更改Annot.update(),以接受用于设置混合模式和不透明度的附加参数。
  • 添加了高级图形功能以控制抗锯齿值,Tools.set_aa_level()。解决了 #467
  • 修复问题 #474
  • 修复问题 #466

版本 1.16.13 变更

  • 添加Document.getPageXObjectList(),返回页面的 Form XObjects 列表。
  • 添加Page.setMediaBox(),用于更改物理 PDF 页面大小。
  • 添加了 Page 方法,这些方法在此之前是内部的:Page.cleanContents()(= Page._cleanContents())、Page.getContents()(= Page._getContents())、Page.getTransformation()(= Page._getTransformation())。

版本 1.16.12 变更

  • 修复问题 #447
  • 修复问题 #461
  • 修复问题 #397
  • 修复问题 #463
  • 添加了对 PDF 表单字段的 JavaScript 支持,从而解决了 #454 问题。
  • 添加了一个新的注释方法 Annot.delete_responses(),用于删除引用当前注释的 ‘Popup’ 和响应注释。主要用于数据保护目的。
  • 新增了一个新的表单字段方法 Widget.reset(),将字段值重置为其默认值。
  • 改变和扩展了对清除的处理:如果图像和 XObjects 包含在清除的矩形中,则会被删除。任何部分重叠的内容将只被清除背景颜色覆盖。现在可以指定一个 叠加文本 来插入到矩形区域中代替删除的原始文本。这解决了 #434

版本 1.16.11 中的变化

  • 新增了通过方法 Page.add_redact_annot()Page.apply_redactions() 支持清除注释的功能。
  • 修复了问题 #426(“1.16.10 版本中的 PolygonAnnotation”)。
  • 修复了文档问题 #443#444

版本 1.16.10 中的变化

  • 修复了问题 #421(“annot.set_rect(rect) 对文本注释无效”)
  • 修复了问题 #417(“1.16.9 版本中的 page.deleteAnnot 行为奇怪,与 1.13.20 版本不符”)
  • 修复了问题 #415(“Annot.setOpacity 抛出 mupdf 警告”)
  • 更改了所有“添加注释 / 小部件”方法,以在 /NM PDF 键中存储唯一名称。
  • 更改Annot.setInfo() ,现在也可以接受直接参数,而不仅仅是字典。
  • 更改Annot.info ,现在还会显示注释的唯一标识(/NM PDF 键)(如果存在)。
  • 新增Page.annot_names() 方法,返回所有注释名称(/NM 键)的列表。
  • 新增Page.load_annot() 方法,根据其唯一标识(/NM 键)加载注释。
  • 新增Document.reload_page() 方法,在完成对页面的所有待处理更新后,提供页面的新副本。

版本 1.16.9 中的变化

  • 修复了 #412(“功能请求:允许控制 TOC 条目是否应该折叠”)
  • 修复了 #411(“使用 page.firstWidget 导致 Seg Fault”)
  • 修复了 #407(“Annot.setOpacity 出问题”)
  • 更改了方法 Annot.setBorder()Annot.setColors()Link.setBorder()Link.setColors() ,现在也可以接受直接参数,而不仅仅是冗长的字典。

版本 1.16.8 中的变化

  • 增加了几种新的方法到 Document 类中,这些方法使得处理 PDF 低级结构更加容易。我也决定将它们提供为“正常”方法(而不是以下划线“_”开头的私有方法)。这些方法包括 Document.xrefObject()Document.xrefStream()Document.xrefStreamRaw()Document.PDFTrailer()Document.PDFCatalog()Document.metadataXML()Document.updateObject()Document.updateStream()
  • 添加 Tools.mupdf_disply_errors(),设置 mupdf 错误在 sys.stderr 上的显示。
  • 添加 命令行功能。这是一个重要的新功能:现在可以通过 “python -m fitz …” 调用几个实用函数。这应该能够取代许多最简单的脚本。请参阅 命令行接口。

版本 1.16.7 的更改

对于 TextPage 图像块和 Document.extractImage() 图像,进行了微小的更改,以更好地同步二进制图像流。

  • 修复 问题 #394(“使用 TOOLS.mupdf_warnings() 时,PyMuPDF Segfaults”)。
  • 修改 MuPDF 错误消息的重定向:除了将它们写入 Python 的 sys.stderr 外,现在还将它们存储在 MuPDF 警告中。
  • 修改 Tools.mupdf_warnings(),现在会自动清空存储(如果没有通过参数停用)。
  • 修改 Page.getImageBbox(),如果无法在页面上定位图像,则返回一个无限矩形,而不是引发异常。

版本 1.16.6 的更改

  • 修复 问题 #390(“注释不完全删除”)。
  • 修改 Page.searchFor() / Document.searchPageFor(),现在也支持 flags 参数,用于控制包含在 TextPage 中的数据。
  • 修改 Document.getPageImageList()Document.getPageFontList() 及其 Page 对应方法,支持新的 full 参数。如果为 true,则返回的项目将包含引用字体或图像的 Form XObjectxref

版本 1.16.5 的更改

进一步优化文本提取性能。

  • 修复 问题 #381 的第二部分(请参阅 v1.16.4 中的项目)。
  • 添加 Page.getTextPage(),现在不再需要为文本提取创建中间显示列表。页面级别的文本提取和文本搜索现在都基于此方法,预计可以提高约 5% 的性能。

版本 1.16.4 的更改

  • 修复 问题 #381(“TextPage.extractDICT … 升级到 1.16.3 后失败 …”)
  • 添加 方法 Document.pages(),用于生成页面范围的迭代器。
  • 添加 方法 Page.links(),用于生成页面链接的迭代器。
  • 添加 方法 Page.annots(),用于生成页面注释的迭代器。
  • 添加 方法 Page.widgets(),用于生成页面表单字段的迭代器。
  • 修改 Document.is_form_pdf,现在包含小部件的数量,如果不是 PDF 或此数量为零,则为 False

版本 1.16.3 的更改

与版本 1.16.2 相比,较小的变化。Page.getText()的“dict”和“rawdict”变体代码已经移植到了 C 中,极大地提高了性能。这在文本导向的文档中特别明显,现在几乎可以快两倍执行。

  • Fixed 问题 #369 (“mupdf: cmsCreateTransform failed”),通过移除 ICC 颜色空间支持来解决。
  • Changed Page.getText() 已修改以接受额外的关键字“blocks”和“words”。它们将分别返回Page.getTextBlocks()Page.getTextWords()的结果。因此,所有文本提取方法现在通过统一的 API 可用。对应地,现在有新的方法TextPage.extractBLOCKS()TextPage.extractWords()
  • Changed Page.getText() 将默认的位指示器TEXT_INHIBIT_SPACES设为off。默认情况下不会抑制额外空格的插入。

版本 1.16.2 中的更改

  • Changed 文本提取方法的 Page 已更改,允许详细控制提取数据量。
  • Added planish_line()用于将给定线(定义为一对点)映射到 x 轴。
  • Fixed 一个问题(无 Github 编号),当使用带有“dict”选项的Page.getText()时,遇到某些非 UTF-8 可编码字符时,解释器崩溃。
  • Fixed 问题 #362 (“使用 getText(‘rawDICT’)导致内存泄漏”).

版本 1.16.1 中的更改

  • Added 属性Quad.is_convex,用于检查线是否包含在四边形中,如果连接了它的两个点。
  • Changed Document.insert_pdf()现在允许在复制期间独立地放弃或包含链接和注释。修复了问题 #352 (“损坏的 PDF 数据和…”),在使用该方法处理某些问题 PDF 文件时似乎偶尔会出现。
  • Fixed 修复了一个 bug,当使用*“m1/m2”语法进行矩阵除法时,导致矩阵“m1”*被替换为结果而不是生成新的矩阵。
  • Fixed 问题 #354 (“Python 3.8 语法警告”)。我们现在始终使用*“==”来比较字面值(而不是 Python 关键字“is”*)。
  • Fixed 问题 #353 (“mupdf 版本检查”), 不再因 MuPDF 只有补丁级别偏差而拒绝导入。

版本 1.16.0 中的更改

MuPDF 的这个重大新版本带来了几个不错的新特性或更改。其中一些暗示了编程 API 的变化。这是变化的概述:

  • 现在完全支持 PDF 文档的加密和解密。包括设置权限密码(用户密码和所有者密码)以及所需的加密方法。
  • 针对新的加密功能,PyMuPDF 返回一个整数(即权限的位组合),不再返回字典。
  • 现在原生支持重定向 MuPDF 的错误和警告。PyMuPDF 将 MuPDF 的错误消息重定向到 sys.stderr,不再缓冲它们。警告仍将被缓冲,并且不会显示。存在函数来访问和重置警告缓冲区。
  • 现在仅支持 PDF 的注释。
  • 注释和小部件(表单字段)现在是页面上的单独对象链(虽然小部件在技术上仍然 PDF 注释)。这意味着,当使用 Page.firstAnnotAnnot.next() 时,永远不会遇到小部件。您必须使用 Page.firstWidgetWidget.next() 来访问表单字段。
  • 作为 MuPDF 关于小部件更改的一部分,在添加或更改表单字段时,仅支持以下四种字体:Courier, Helvetica, Times-RomanZapfDingBats

变更详情列表:

  • 添加 Document.can_save_incrementally(),检查阻止使用选项 incremental=TrueDocument.save() 的条件。
  • 添加Page.firstWidget,指向页面上第一个字段。
  • 添加 Page.getImageBbox(),返回页面上显示的图像所占用的矩形。
  • 添加 Annot.setName(),允许您更改(图标)名称字段。
  • 添加了在 Page.getText() 中输出文本颜色的功能:“dict”“rawdict”“xml” 选项现在还显示 sRGB 格式的颜色。
  • 变更 Document.permissions 现在包含一个布尔指示器的整数 – 之前是一个字典。
  • 变更 Document.save()Document.write(),现在完全支持基于密码的 PDF 文件解密和加密。
  • 变更所有与注释和小部件相关的 Python 常量名称。请确保查阅常量和枚举章节,如果您的脚本涉及这两个类。这一决定源于对非 PDF 注释的支持。旧名称(以“ANNOT_”或“WIDGET_”开头)将作为弃用的同义词可用。
  • 变更 对小部件的字体支持:仅支持 Cour (Courier), Helv (Helvetica, 默认), TiRo (Times-Roman) 和 ZaDb (ZapfDingBats) 添加或更改表单字段时。只有普通版本是可能的 – 不支持它们的斜体或粗体变体。然而,阅读小部件将显示其原始字体。
  • 变更 警告缓冲区的名称为 Tools.mupdf_warnings(),清空此缓冲区的函数现在称为 Tools.reset_mupdf_warnings()
  • 更改Page.getPixmap()Document.get_page_pixmap():现在可以使用新的布尔参数 annots抑制页面上注释的渲染
  • 更改Page.add_file_annot()Page.add_text_annot(),可以设置图标。
  • 移除了 Annot 对象中与小部件相关的方法和属性。
  • 移除了 Document 属性 openErrCodeopenErrMsg,以及 Tools 的属性/方法 stderrreset_stderrstdoutreset_stdout
  • 移除了 PyMuPDF 中的 thirdparty zlib 依赖:现在 MuPDF 中提供了压缩函数。因此,PyMuPDF 的源安装程序现在可以省略这一额外的安装步骤。

MuPDF v1.15.0 未发布任何版本


1.14.20 / 1.14.21 版本变更

  • 更改了文本标记注释,支持多个矩形/四边形。修复问题 #341(“问题:如何添加高亮,以便跨多行的字符串只覆盖一个高亮?”)和类似问题 #285。
  • 修复了问题 #331(“导入 PyMuPDF 更改警告全局过滤行为”)。

1.14.19 版本变更

  • 修复了问题 #319(“使用自定义字体时 InsertText 函数错误”)。
  • 添加了新方法 Document.get_sigflags(),用于返回 PDF 签名信息。解决问题 #326(“如何检测表单 PDF 中的签名?”)。

1.14.17 版本变更

  • 添加Document.fullcopyPage(),用于在 PDF 中进行完整页面复制(不仅是 Document.copyPage() 中的引用复制)。
  • 更改Page.getPixmap()Document.get_page_pixmap(),现在默认使用 alpha=False
  • 更改了文本提取方式:现在 span 字典再次包含在 bbox 键下的矩形。
  • 更改Document.movePage()Document.copyPage(),使用直接函数而不是包装 Document.select() – 类似于 v1.14.16 中的 Document.delete_page()

1.14.16 版本变更

  • 更改了关于 PDF /EmbeddedFiles 的 Document 方法,不再使用 MuPDF 的“portfolio”功能。MuPDF v1.15 将不再支持该功能,因此需要另一种解决方案。
  • 更改Document.embfile_Count(),现在是一个函数(之前是一个属性)。
  • 添加了新方法 Document.embfile_Names(),用于返回嵌入文件的名称列表。
  • 更改 Document.delete_page()Document.delete_pages() 在内部不再使用 Document.select(),而是直接使用函数执行删除。由于已经发现,Document.select() 方法对于非常复杂的 PDF 和注释使用复杂的文档(目录表)生成了无效的大纲树。

1.14.15 版本变更

  • 修复问题 #301(“线段端点和连接点”)、#300(“如何绘制没有轮廓的形状”)和  #298(“utils.updateRect 异常”)。这些 bug 与 PyMuPDF  绘制形状相关。完全支持绘制没有任何边框的形状。线段端点样式和线段连接样式现在有所区别,并支持所有可能的 PDF  值(0、1、2),而不仅仅是布尔值。先前的参数 roundCap 已被 lineCaplineJoin 取代,将在下一个版本中删除。
  • 修复问题 #290(“使用 getText(‘rawDICT’) 时的内存泄漏”)。此 bug 导致在调用 Page.getText() 的 “dict”、“rawdict” 和 “json” 版本后内存没有(完全)释放。

1.14.14 版本变更

  • 新增新的低级函数 ImageProperties(),用于确定图像的许多特征。
  • 新增新的低级函数 Document.is_stream(),用于检查对象是否为流类型。
  • 更改低级函数 Document._getXrefString()Document._getTrailerString() 现在默认以格式化形式返回对象定义,这使得解析变得容易。

1.14.13 版本变更

  • 更改处理二进制输入的方法:虽然一直支持字节和字节数组对象,但现在还接受 io.BytesIO 输入,并使用它们的 getvalue() 方法。这适用于文档创建、嵌入文件、FileAttachment 注释、位图创建等。修复了问题 #274(“使用 BytesIO 作为 insertImage 流时导致的 Segfault”)。
  • 修复问题 #278(“插入图片(保持比例=True)是否有问题?”)。现在在保持长宽比的情况下正确显示图片。

1.14.12 版本变更

  • 更改Page 和 Shape 的绘制方法,以支持 RGB、GRAY 和 CMYK 颜色空间。这解决了问题 #270(“是否有一种方法可以使用 CMYK 颜色来绘制形状?”)。此更改还适用于 Shape 和 Page 的文本插入方法。
  • 修复问题 #269(“Document.insert_page() 中的 AttributeError”),该问题发生在使用 Document.insert_page() 进行文本插入时。

1.14.11 版本变更

  • 变更 Page.show_pdf_page() 以始终将源矩形居中放置在目标中。此方法现在还支持任意角度的旋转。参数 reuse_xref 已被弃用:防止重复现在内部处理
  • 变更 Page.insertImage() 以支持图像的旋转显示并保持纵横比。此处仅支持 90 度的倍数旋转。
  • 修复了 #265 号问题(“TypeError: insertText()接收到意外的关键字参数‘idx’”)。此问题仅在使用 Document.insert_page() 时插入文本时发生。

1.14.10 版本变更

  • 变更 Page.show_pdf_page() 以支持源矩形的旋转。修复了 #261 号问题(“无法旋转插入的页面”)。
  • 修复Page.insertImage() 中的一个错误,该错误阻止了以流的形式插入多个图像。

1.14.9 版本变更

  • 添加了新的低级方法 Document._getTrailerString(),它返回 PDF 的尾部对象。这与 Document._getXrefString() 类似,但 PDF 尾部没有 / 不需要 xref 来标识它。
  • 添加了用于文本插入方法的新参数。现在可以独立设置字形(文本字符)的描边和填充颜色,以及字形边框的厚度。新参数 render_mode 控制这些颜色的使用以及文本是否应该可见。
  • 修复了 #258 号问题(“将图像流复制到新的 PDF 时不增加大小”):对于嵌入 PDF 中的 JPX 图像,Document.extractImage() 现在将以原始格式返回它们。先前使用的是 MuPDF 基本库,它以 PNG 格式返回它们(导致了巨大的大小增加)。
  • 修复了 #259 号问题(“将文字变形以适应矩形内部”)。澄清了 get_text_length() 的用法,并删除了长单词的额外换行。

1.14.8 版本变更

  • 添加Pixmap.set_rect() 以更改矩形中的像素值。这也是设置完整 Pixmap 颜色(Pixmap.clear_with())的替代方法。
  • 修复了使用 JBIG2(单色)编码的 PDF 图像的图像提取问题。该问题出现在 Page.getText()(参数“dict”和“rawdict”)和 Document.extractImage() 方法中。
  • 修复了一个关于非 AlphaPixmap(Pixmap.clear_with())的清除不正确的问题。
  • 修复了一个关于非 AlphaPixmap(Pixmap.invert_irect())的颜色未正确反转的问题。

版本 1.14.7 中的变更

  • 新增Pixmap.set_pixel() 方法,用于改变一个像素值。
  • 新增了关于在 FAQ 中进行图像转换的文档。
  • 新增get_text_length() 函数,用于确定给定字体的字符串长度。
  • 新增了 Postscript 图像输出(更改了 Pixmap.save()Pixmap.tobytes())。
  • 更改了 Pixmap.save()Pixmap.tobytes() 以确保颜色空间、alpha 和输出格式的有效组合。
  • 更改了 Pixmap.save() 方法:现在所需的格式可以从文件名推断出来。
  • 更改了 FreeText 注释现在可以具有透明背景 - 请参见 Annot.update()

版本 1.14.5 中的变更

  • 更改了: Shape 方法现在严格使用 Page 的变换矩阵 – 而不是手动计算位置。
  • 新增Pixmap.pixel() 方法,用于返回给定像素坐标的像素值(一个列表)。
  • 新增Pixmap.tobytes() 方法,用于返回表示各种格式的 pixmap 的字节对象。先前,这仅适用于 PNG 输出(Pixmap.tobytes())。
  • 更改了: Pixmap.save() 方法及(新的)Pixmap.tobytes() 方法的输出现在也可能是 PSD(Adobe Photoshop Document)格式。
  • 新增Shape.drawQuad() 方法,用于绘制 Quad。实际上,这是使用四边形的边缘进行 Shape.drawPolyline() 的简写。
  • 更改了 Shape.drawOval() 方法:现在参数可以是一个矩形(rect_like或者一个四边形(quad_like)。

版本 1.14.4 中的变更

  • 修复了问题 #239 “注释坐标一致性”。

版本 1.14.3 中的变更

此补丁版本包含了次要错误修复和 CJK 字体输出支持。

  • 新增了对四种 CJK 字体的支持,作为 PyMuPDF 生成的文本输出。这涉及到 Page.insertFont()Shape.insertText()Shape.insertTextbox() 方法及其对应的 Page 方法。新字体可在“保留”字体名称下使用,包括 “china-t”(繁体中文)、“china-s”(简体中文)、“japan”(日文)和 “korea”(韩文)。
  • 新增了对内置字体 ‘Symbol’ 和 ‘Zapfdingbats’ 的完整支持。
  • 更改了: 现在可以通过四字母缩写引用每个 14 种标准字体。

版本 1.14.1 的变更

此补丁版本包含轻微的性能改进。

  • 添加 对文档文件名的支持,作为pathlib对象,使用 Python 的*str()*函数。

版本 1.14.0 的变更

为了支持 MuPDF v1.14.0,PyMuPDF 需要进行了大量的更改 - 其中大部分是技术性的,对开发人员的可见性不大。但也有相当多的有趣的新功能和改进功能。以下是详细信息:

  • 添加 “墨迹”注释。
  • 添加 “橡皮图章”注释。
  • 添加 “波浪线”文本标记注释。
  • 添加 新的类四边形(平面中的四边形或四边形)- 代表平面中的一般四边形形状。在文本标记注释中使用的矩形特殊子类型和文本搜索方法返回的对象。
  • 添加 新选项“解密”到Document.save()Document.write()。现在,保存受密码保护的 PDF 时可以保持加密
  • 添加 对底层 C 库 MuPDF 发出的未经请求的消息的抑制和重定向。有关详细信息,请参阅重定向错误和警告消息。
  • 更改: 现在对注释的更改始终需要 Annot.update() 才能生效。
  • 更改 自由文本注释以支持完整的拉丁字符集和外观选项范围。
  • 更改 文本搜索,Page.searchFor(),可选择返回四边形而不是矩形对象,围绕每个搜索命中。
  • 更改 纯文本输出:现在如果每行不以此字符结尾,则在每行末尾添加 n
  • 修复 问题 211(“文档中有错误”)。
  • 修复 问题 213(“重写的大纲仅由基于 MuPDF 的应用程序显示”)。
  • 修复 问题 214(“PDF 解密 GONE!”)。
  • 修复 问题 215(“使用 pyMuPDF 添加的链接格式”)。
  • 修复 问题 217(“我的 PDF 提取通过 JSON 失败”)。

在幕后,我们已经改变了几何对象的实现方式:它们现在完全存在于 Python 中,不再在 C 级别(MuPDF 中)存在“影子”双胞胎。这在该领域的处理速度提高了两倍以上。

由于同样的原因,现在大多数涉及几何参数的方法也接受相应的 Python 序列。例如,在方法*“page.show_pdf_page(rect, …)”中,参数rect*现在可以是任何rect_like序列。

我们还投入了大量精力来进一步扩展和改进常见问题解答(FAQ)章节。


版本 1.13.19 的变更

此版本包含一些技术/性能改进和错误修复。

  • 更改内存管理:对于 Python 3 构建,Python 内存管理专门用于所有 C 级别代码(即 MuPDF 代码或 PyMuPDF 接口代码中不再使用原生 malloc())。这导致改进的内存使用配置文件,并且还有一些运行时改进:我们已经看到文本提取和像素图创建的运行时间缩短了 > 2%(目前仅在 Windows 机器上)。
  • 修复Python 2.7 中出现的错误,在使用 TextPage.extractRAWDICT() (= Page.getText(“rawdict”))时导致解释器崩溃。
  • 修复一个错误,在 Python 2.7 中创建链接目标时出现错误。
  • 扩展FAQ 章节,提供更多示例。

版本 1.13.18 变更

  • 添加方法TextPage.extractRAWDICT(),以及相应的新字符串参数“rawdict”到方法Page.getText()。它以 Python dict 形式从页面提取文本和图像,类似于 TextPage.extractDICT(),但具有 TextPage.extractXML() 的详细级别,即位置信息下到每个单个字符。

版本 1.13.17 变更

  • 修复一个错误,此错误间歇性地导致Page.show_pdf_page()中的异常,当来自许多不同源 PDF 的页面显示时。
  • 更改方法Document.extractImage()现在返回有关提取图像的更多元信息。此外,其性能已大大提高。几个演示脚本已更改以使用此方法。
  • 更改方法Document._getXrefStream()现在如果对象不是流则返回 None,并且不再引发异常。
  • 添加方法Document._deleteObject(),它删除由其 xref 标识的 PDF 对象。只能由经验丰富的 PDF 专家使用。
  • 添加一个方法paper_rect(),它返回所提供纸张格式字符串的 Rect。示例:fitz.paper_rect(“letter”) = fitz.Rect(0.0, 0.0, 612.0, 792.0)
  • 在此文档中添加FAQ 章节。

版本 1.13.16 变更

  • 添加对于某些注释类型正确设置透明度(不透明度)的支持。
  • 添加一个工具属性(Tools.fitz_config gives “cannot resize a buffer with shared storage” error’)。

版本 1.13.15 变更

  • 修复了 问题 #189(“无法找到内置的 CJK 字体”),所以我们现在支持内置的  CJK 字体(CJK = 中国、日本、韩国)。这应该会导致对使用这些语言的文档生成正确的像素图。这个变化对我们的二进制文件大小有影响:它现在将在  8 到 10MB 之间,取决于操作系统。
  • 修复了 问题 #191(“Jupyter 笔记本内核在大约 40 页后死机”),当修改注释的内容时会出现此问题。

版本 1.13.14 中的变化

这个补丁版本包含了几个改进,主要是用于注释。

  • 更改了 Annot.lineEnds 现在是表示行结束符号的两个整数的列表。之前是一个字符串的字典
  • 新增了 对适用注释的行结束符号的支持。PyMuPDF 现在可以生成包括行结束符号在内的这些注释。
  • 新增了 Annot.setLineEnds() 用于向适用的注释类型(‘Line’、‘PolyLine’、‘Polygon’)添加行结束符号。
  • 更改了 Page.insertImage()Page.show_pdf_page() 的技术实现:它们现在会创建自己的内容对象,从而避免了对潜在大流的更改,避免了压缩/解压缩工作以及增量更新时的高更改量。

版本 1.13.13 中的变化

这个补丁版本包含了几个嵌入文件和文件附件注释的改进。

  • 新增了 Document.embfile_Upd() 允许更改嵌入文件的文件内容和元数据。它取代了旧方法 Document.embfile_SetInfo()(将在将来的版本中删除)。内容会自动压缩,元数据可以是 Unicode。
  • 更改了 Document.embfile_Add() 现在会自动压缩文件内容。相关元数据现在可以是 Unicode(过去必须是 ASCII)。
  • 更改了 Document.embfile_Del() 现在会自动删除所有具有提供的标识名称的条目。返回码现在是被删除条目的整数计数(之前是None)。
  • 更改了 嵌入文件方法,现在也接受或显示 PDF 的 Unicode 文件名作为额外参数ufilename
  • 新增了 Page.add_file_annot() 用于添加新的文件附件注释。
  • 更改了 Annot.fileUpd()(文件附件注释)现在还接受 PDF 的 Unicode ufilename 参数。描述参数desc可以正确使用 Unicode。此外,所有参数都是可选的,因此可以更改元数据而不必替换文件内容。
  • 更改了 Annot.fileInfo()(文件附件注释)现在还会显示 PDF 的 Unicode 文件名作为参数ufilename
  • 修复了 问题 #180(“page.getText(output=’dict’) 返回无效的 bbox”),现在也适用于垂直文本。
  • 修复 问题 #185(“无法呈现 PyMuPDF 创建的注释”)。该问题的原因是 MuPDF 在创建注释时采用了极简主义方法。MuPDF 函数创建的几种注释类型没有 /AP(“外观”)对象。此修复现在确保,每次创建注释时都会同时创建外观对象。我们仍不支持线条端点样式。

1.13.12 版本变更

  • 修复 问题 #180(“page.getText(output=’dict’) 返回无效的 bbox”)。请注意,这是对 MuPDF 错误的一种规避,某些情况下会生成零高度字符矩形。当发生这种情况时,此修复确保 bbox 高度至少为字体大小。
  • 对于列表框和组合框小部件,可选择值的属性列表已重命名为 Widget.choice_values
  • 更改 在添加小部件时,自动将任何缺失的 PDF Base 14 Fonts 添加到 PDF 中。现在还可以从现有的小部件字体中选择小部件文本字体。任何指定的字段值现在都会被尊重,并导致具有预设值的字段。
  • 新增 Annot.updateWidget() 允许更改现有表单字段,包括字段值。

1.13.11 版本变更

尽管前几个补丁子版本只包含各种修复,但此版本再次引入了重要的新功能:

  • 新增 PDF 小部件注释的基本支持。现在可以添加类型为文本、复选框、列表框和组合框的 PDF 表单字段。在需要时,PDF 被转换为带有第一个添加的小部件的表单 PDF。
  • 修复 问题 #176(“嵌入错误文件”)、#177(“调用 page.getText() 时段错误”)和 #179(“在加密 PDF 上使用 page.getLinks() 时分段错误”)。

1.13.7 版本变更

  • 新增 对可重排文档(电子书、HTML 等)的可变页面大小支持:在 Document 创建(打开)时新增参数 rectfontsize,以及作为单独方法 Document.layout()
  • 新增 Annot 创建多种注释类型:便签、自由文本、圆形、矩形、线条、多边形、折线和文本标记。
  • 新增支持注释透明度(Annot.opacityAnnot.setOpacity())。
  • 更改 Annot.vertices:点坐标现在被分组为浮点数对(不再作为单独的浮点数)。
  • 更改 注释颜色字典:两个键现在命名为 “stroke”(以前为 “common”)和 “fill”
  • 新增 Document.isDirty 如果 PDF 在本次会话中已更改,则为 True。每次 Document.save()Document.write() 后重置为 False

版本 1.13.6 变更

  • 修复 #173:对于内存驻留文档,确保在文档关闭之前 Python 不会垃圾回收流对象。

版本 1.13.5 变更

  • 新的低级方法 Page._setContents() 定义了一个由其 xref 指定的对象,作为 contents 对象。
  • 改变并扩展了 PDF 表单字段支持:属性 widget_text 已重命名为 Annot.widget_value。现在支持所有表单字段类型的值(除了签名)。新属性 Annot.widget_choices 包含列表框和组合框的可选值。如果没有值存在,所有这些属性现在都包含 None

版本 1.13.4 变更

  • Document.convertToPDF() 现在支持页面范围、恢复的页面顺序和页面旋转。如果文档已经是 PDF,则会引发异常。
  • 修复了一个 bug(从 v1.13.0 引入),阻止了对透明图像进行 Page.insertImage()

版本 1.13.3 变更

引入了一种将 任何 MuPDF 支持的文档 转换为 PDF 的方法。如果您希望将 XPS、EPUB、CBZ 或 FB2 文件转换为 PDF 版本,这里有一个方法。

  • Document.convertToPDF() 返回一个 Python 的 bytes 对象,以 PDF 格式呈现。可以像普通文件一样在 PyMuPDF 中打开,或者带有 “.pdf” 扩展名写入磁盘。

版本 1.13.2 变更

主要增强是 PDF 表单字段支持。表单字段是类型为 (19, ‘Widget’) 的注释。有一个新的文档方法来检查 PDF 是否为表单。Annot 类具有描述字段详细信息的新属性。

  • Document.is_form_pdf 如果对象类型为 /AcroForm 并且至少存在一个表单字段,则为 true。
  • Annot.widget_typeAnnot.widget_textAnnot.widget_name 包含表单字段(即“Widget”注释)的详细信息。

版本 1.13.1 变更

  • TextPage.extractDICT() 是提取文档页(文本和图像)内容的新方法。与其他 TextPage extract()* 方法一样,支持所有文档类型。返回的对象是嵌套列表和其他字典的字典,与旧的 TextPage.extractJSON() 的 JSON 反序列化完全相同。不同之处在于结果是直接创建的 – 不使用 JSON 模块。因为用户无需 JSON 模块来解释信息,所以使用起来应该更容易,而且性能更好,因为它包含图像的原始 二进制格式 – 无需进行 base64 解码。
  • Page.getText() 相应地支持新参数值 “dict” 以调用上述方法。
  • TextPage.extractJSON()(或 Page.getText(“json”))仍然为方便起见支持,但预计其使用将减少。

版本 1.13.0 的变更

本版本基于 MuPDF v1.13.0. 此版本是“主要的 bug 修复版本”。

在 PyMuPDF 中,我们还进行了一些 bug 修复,同时引入了一些小的增强功能。对用户 API 仅有非常小的更改。

  • Document 的构造更加灵活:新的 filetype 参数允许设置文档类型。如果指定了此参数,将忽略文件名中的任何扩展名。更全面地解决了 问题 #156。作为此过程的一部分,文档已经重新编写。
  • Pixmap 构造函数的变更:
  • 色彩空间转换不再允许丢弃 alpha 通道:源和目标的 alpha 现在将始终相同。当使用 alpha = 0 时,我们曾看到异常甚至解释器崩溃。
  • 作为替代,简单的像素图复制允许您选择目标 alpha 值。
  • Document.save() 再次提供完整的垃圾回收范围 0 到 4. 由于 xref 维护中的一个 bug,我们不得不临时强制 garbage > 1。最终解决了 问题 #148
  • Document.save() 现在提供通过额外的参数“美化” PDF 源码的选项。
  • Page.insertImage() 现在有了额外的 stream 参数,指定一个保存图像的内存区域。
  • 解决了在 Linux 系统上 PNG 图像乱码的问题(“Problem writing PNG” #133)。

版本 1.12.4 的变更

这是 1.12.3 版本的扩展。

  • 修复了 问题 #147:方法 Document.getPageFontlist()Document.getPageImagelist() 现在还显示通过“Form XObjects”嵌套的 resources 中包含的字体和图像。
  • 临时修复了 问题 #148:保存到新的 PDF 文件现在将自动使用 garbage = 2,如果给定值较低。最终修复预计将在 MuPDF 的下一个版本中完成。届时我们将移除这个变通方法。
  • 修正了某些方法中非法使用模版 / 图像掩模位图的预防性修复。
  • 方法 Document.getPageFontlist() 现在包含列表中每个字体的编码名称。
  • 方法 Document.getPageImagelist() 现在包含列表中每个图像的解码方法名称。

版本 1.12.3 的变更

这是 1.12.2 版本的扩展。

  • 许多函数现在在结果没有其他含义时返回 None,而不是 0(例如 Document.close(), Document.save(), Document.select(), Pixmap.save() 和许多其他函数)。

版本 1.12.2 变更

这是 1.12.1 版本的扩展。

  • 方法 Page.show_pdf_page() 现在接受新的 clip 参数。这指定了应限制显示的源页面区域。
  • 为方便起见,新增了 Page.CropBoxPage.MediaBox

版本 1.12.1 变更

这是 1.12.0 版本的扩展。

  • 新方法 Page.show_pdf_page() 显示另一个 PDF 页面。这是一个矢量图像,因此在缩放时保持精确。两个涉及的文档必须是 PDF 格式。
  • 新方法 Page.getSVGimage() 创建页面的 SVG 图像。与位图的光栅图像相比,这是一种矢量图像格式。返回的是一个 Unicode 文本字符串,可以保存在 .svg 文件中。
  • 方法 Page.getTextBlocks() 现在接受额外的布尔参数 “images”。如果设置为 true(默认为 false),则包括图像块(仅元数据)在内的列表,从而允许检测包含渲染图像的区域。
  • 进行了一些次要的错误修复。
  • Page.getText() 的 “text” 结果通过使用单个空格字符连接块内所有行。MuPDF 的原始版本使用 “\n”,导致输出比较不规则。
  • 页面对象 Page 的新属性 Page.MediaBoxSizePage.CropBoxPosition 提供了关于页面尺寸的更多信息。对于非 PDF 文件(以及大多数 PDF 文件),它们将等同于 Page.rect.bottom_rightPage.rect.top_left。例如,类 Shape 使用它们正确地定位其项目。

版本 1.12.0 变更

此版本基于并需要 MuPDF v1.12.0。新的 MuPDF 版本包含了许多变更,主要围绕文本提取。其中一些变更影响了程序员的 API。

  • Outline.saveText()Outline.saveXML() 被删除且没有替代。你可能并未经常使用它们。但如果你在寻找替代方案:Document.get_toc() 的输出可以轻松用于生成等效内容。
  • TextSheet 不再存在。
  • 文本“spans”(TextPage 的层次之一)不再包含位置信息(即没有 “bbox” 键)。相反,spans 现在为其文本提供字体信息。这影响了我们的 JSON 输出变体。
  • HTML 输出已经大大改进:现在它创建的是有效的文档,可以由浏览器显示,以产生与原始文档类似的视图。
  • 现在有一个新的输出格式 XHTML,它以浏览器可读的格式提供文本和图像。与 HTML 输出的区别在于,不会尽力复制原始布局。
  • Page.getText() 的所有输出格式现在都支持创建完整的、有效的文档,通过添加适当的头部和尾部信息进行包装。如果您有兴趣使用 HTML 输出,请确保阅读 控制 HTML 输出的质量。
  • 为了支持查找文本位置,我们添加了一些特殊方法,无需像 TextPage.extractJSON()TextPage.extractXML() 那样绕弯子:使用 Page.getTextBlocks()Page.getTextWords() 来创建文本块或单词列表,它们附带其矩形。这应该比标准文本提取方法快得多,也避免了使用额外的包来解释它们的输出。

版本 1.11.2 中的更改

这是 v1.11.1 的扩展版本。

  • 新的 Page.insertFont() 创建一个 PDF 的 /Font 对象并返回其对象编号。
  • 新的 Document.extractFont() 提取给定对象编号的嵌入字体的内容。
  • 方法 FontList(…) 中的项目不再包含 PDF 生成编号。这个值从未有过任何意义。相反,现在包括了字体文件扩展名(例如,“pfa”表示“PostScript Font for ASCII”),这是更有价值的信息。
  • 除了“简单字体”(Type1)之外,现在还支持其他字体。
  • 改变 Pixmap 尺寸的新选项:
  • 方法 Pixmap.shrink() 在原地按比例减小了像素图。

  • 通过设置目标宽度和高度,新的 Pixmap 复制构造函数允许进行缩放。

版本 1.11.1 中的更改

这是 v1.11.0 的扩展版本。

  • 新类 Shape。它简化并扩展了在 PDF  页面上创建图像形状的过程。它包含多个用于创建基本形状(如线条、矩形或圆形)的方法,这些形状可以组合成更复杂的形状,并且可以赋予它们共同的属性,如线宽或颜色。组合的形状被视为一个单元,例如可以一起“变形”。该类可以累积多个复杂形状,并将它们全部放在页面的前景或背景中  - 因此还可以减少页面的 contents 对象的更新次数。
  • 所有 Page 绘制方法现在都使用新的 Shape 类。
  • 文本插入方法 insertText()insertTextBox() 现在除了支持文本旋转外,还支持变形。它们已成为 Shape 类的一部分,因此允许文本与图形自由组合。
  • 新的 Pixmap 构造函数允许创建带有附加 alpha 通道的 pixmap 副本。一个新方法还允许直接操作 alpha 值。
  • 二元几何对象(矩阵、矩形和点)的代数运算现在通常也支持列表或元组作为第二操作数。您可以将数字元组 (x, y) 添加到 Point 中。在这种情况下,这些序列被称为“point_like”(或 matrix_likerect_like)。
  • 几何对象现在完全支持就地运算符。例如,p /= m 将点 p 替换为数字 1/mp,或者对于 matrix_like 对象 m,则为 p * ~m。同样,如果 r 是一个矩形,则 r |= (3, 4) 是包含 fitz.Point(3, 4) 的新矩形,r &= (1, 2, 3, 4) 则是与 fitz.Rect(1, 2, 3, 4) 的交集。

版本 1.11.0 中的变更

此版本基于并需要 MuPDF v1.11。

虽然 MuPDF 已经声明这主要是一个修复 bug 的版本,但确实包含一个重要的新功能:支持嵌入文件,也称为组合或集合。我们已扩展了 PyMuPDF 的功能,以支持这一功能,超过了 mutool 实用程序的范围。

  • Document 类现在支持嵌入文件,具有几个新方法和一个新属性:
  • embfile_Info() 返回嵌入文件列表中条目的元数据信息。这比 mutool 目前提供的更多,它显示了用于嵌入文件的所有信息(而不仅仅是条目的名称)。

  • embfile_Get() 将条目的(解压缩的)内容检索到一个 bytes 缓冲区中。

  • embfile_Add(…) 将新内容插入到 PDF 组合中。我们(与 mutool 相反)限制此操作仅适用于具有新名称的条目(不允许重复名称)。

  • embfile_Del(…) 从组合中删除条目(MuPDF 中不提供此功能)。

  • embfile_SetInfo() – 更改嵌入文件的文件名或描述。

  • embfile_Count – 包含嵌入文件的数量。
  • 几个增强功能用于简化几何对象的流程。这些与新的 MuPDF 版本无关,大多数也反映在 PyMuPDF v1.10.0 中。其中包括通过名称识别矩形的新属性(例如 Rect.bottom_right)以及处理集合论问题的新方法,如 Rect.contains(x)IRect.intersects(x)。特别关注支持更多“Pythonic”语言构造:if x in rect … 相当于 rect.contains(x)
  • Rect 章节现在更多地介绍了空和无限矩形的背景及其处理方式的更新。处理本身也更新为在这一领域更加一致。
  • 我们已开始基本支持 PDF 内容的生成
  • Document.insert_page() 将一个新页面添加到 PDF 中,可选包含一些文本。

  • Page.insertImage() 将新的图像放在 PDF 页面上。

  • Page.insertText() 将新的文本放在现有页面上。
  • 对于 FileAttachment 注释,可以提取和更改附加文件的内容和名称。

版本 1.10.0 中的更改

MuPDF v1.10 影响

MuPDF 版本 1.10 对我们的绑定产生了重大影响。一些更改也影响了 API - 换句话说,作为 PyMuPDF 用户受到了影响。

  • 链接目标信息已减少。 linkDest 类的几个属性不再包含有价值的信息。事实上,这个类作为一个整体已从 MuPDF 的库中删除,我们在 PyMuPDF 中只是为了提供对现有代码的兼容性而维护它。
  • 为了最小化内存要求,MuPDF v1.10 中内置了几项改进:
  • 一个新的 config.h 文件可以用来取消 C 代码中不需要的功能。使用这个功能,我们已经成功将二进制文件 _fitz.o / _fitz.pyd 的大小减少了约 50%(从 9 MB 减少到了 4.5 MB)。当使用 UPX 压缩时,大小甚至进一步减少到了非常方便的 2.3 MB。

  • pixmap 的 alpha(透明度)通道现在是可选的。让 alpha 默认为 False 可显著减小 pixmap 的大小(20% - CMYK,25% - RGB,50% - GRAY)。因此,许多 Pixmap 构造函数现在接受一个 alpha 布尔值来控制是否包含此通道。其他 pixmap 构造函数(例如文件和图像输入的构造函数)完全不包含 alpha 的 pixmap。但是,pixmap 的保存方法不再接受 savealpha 选项:当存在时,此通道将始终保存。为了最小化代码断点,我们在调用模式中保留了此参数 - 它将被忽略。
  • DisplayListTextPage 类的构造函数现在需要页面的媒介框(即*page.bound()*矩形)。没有办法从其他来源构造这些信息,因此在这些情况下无法避免源代码更改。但是我们假设,实际上没有多少用户会明确地使用这些底层类。因此,这种变化的影响应该是很小的。

与版本 1.9.3 相比的其他更改

  • 新的 Document 方法 write() 将已打开的 PDF 写入内存(与 save() 不同,它将文件写入)。
  • 注释现在可以在页面上缩放和移动。这是通过修改其矩形来完成的。
  • 现在可以删除注释。 Page 包含了新方法 deleteAnnot()
  • 现在可以修改各种注释属性,例如内容、日期、标题(= 作者)、边框、颜色。
  • 方法 Document.insert_pdf() 现在还会复制源页面的注释。
  • Pages 已被删除。由于现在可以使用页面编号作为索引访问文档(比如 doc[n] = doc.loadPage(n)),并且文档对象可以用作迭代器,因此维护此类的好处太低。请参见以下评论。
  • loadPage(n) / doc[n] 现在接受任意整数来指定页面号,只要 n < pageCount。例如,doc[-500] 总是有效的,并将加载页面 (-500) % pageCount
  • 现在可以像这样将文档用作迭代器:for page in doc: …<使用“page”做某事> …。这将生成 doc 的所有页面作为 page
  • 方法 getSize() 已被属性 size 取代。与之前一样,Pixmap.size == len(Pixmap) 成立。
  • 针对透明度(alpha)是可选的反应,已向 Pixmap 和 Colorspace 类添加了多个新参数和属性,以支持确定它们的特性。
  • 页面 类现在包含新属性 firstAnnotfirstLink,用于提供到相应类链的起始点,其中 firstLink 仅是方法 loadLinks() 的助记符同义词,该方法仍然存在。类似地,新属性 rect 是方法 bound() 的同义词,该方法也仍然存在。
  • Pixmap 方法 samplesRGB()samplesAlpha() 已删除,因为现在可以创建不带透明度的像素图。
  • Rect 现在具有属性 irect,它是方法 round() 的同义词。同样地,IRect 现在具有属性 rect,以提供具有浮点坐标值的 Rect。
  • 文档具有新方法 searchPageFor() 用于搜索文本字符串。它的工作方式与相应的 Page.searchFor() 相同,额外的参数是页码。

版本 1.9.3 中的变更

此版本还基于 MuPDF v1.9a。与版本 1.9.2 相比的更改包括:

  • 作为一个重大的增强,注释现在以类似于链接的方式支持。可以显示注释(作为像素图),并且可以访问它们的属性。
  • 除了文档的 select() 方法外,现在还可以使用一些更简单的方法来操作 PDF:
  • copyPage() 在文档内复制页面。

  • movePage() 类似,但会删除原始页面。

  • delete_page() 删除页面。

  • delete_pages() 删除页面范围。
  • rotationsetRotation() 分别访问或更改 PDF 页面的旋转。
  • 以前虽然未记录,但 IRect、Rect、Point 和 Matrix 现在支持 len() 方法,可以通过索引访问它们的坐标属性,例如 IRect.x1 == IRect[2]
  • 为方便起见,文档现在支持简单的索引:doc.loadPage(n) == doc[n]。索引可能在范围 -pageCount < n < pageCount 内,因此 doc[-1] 是文档的最后一页。

版本 1.9.2 的变更

此版本还基于 MuPDF v1.9a。与版本 1.9.1 相比的更改如下:

  • fitz.open()(无参数)创建一个新的空PDF文档,即如果之后保存,必须加上*.pdf*扩展名。
  • 文档现在接受以下所有格式(Documentopen是同义词):
  • open()
  • open(filename)(等效于open(filename, None)),
  • open(filetype, area)(等效于open(filetype, stream = area))。
  • 内存区域stream的类型可以是bytesbytearray。因此,例如,可以直接使用area = open(“file.pdf”, “rb”).read()(而不必先转换为 bytearray)。
  • 新方法Document.insert_pdf()(仅限 PDF)从另一个 PDF 插入页面范围。
  • Document对象现在支持*len()*函数:len(doc) == doc.pageCount
  • 新方法*Document.getPageImageList()*创建页面上使用的图像列表。
  • 新方法*Document.getPageFontList()*创建页面引用的字体列表。
  • 新的像素图构造函数*fitz.Pixmap(doc, xref)*基于已打开的 PDF 文档和图像的xref编号创建像素图。
  • 新的像素图构造函数fitz.Pixmap(cspace, spix)创建一个像素图,作为另一个像素图spix的副本,并将颜色空间转换为cspace。这适用于所有颜色空间组合。
  • 像素图构造函数fitz.Pixmap(colorspace, width, height, samples)现在还允许samplesbytes,不仅仅是bytearray

版本 1.9.1 的变更

此版本的 PyMuPDF 基于 MuPDF 库源代码版本 1.9a,发布于 2016 年 4 月 21 日。

请查看 MuPDF 的网站,了解包含的变更和增强功能。

与版本 1.8.0 相比,版本 1.9.1 的更改如下:

  • 对于fitz.Rectfitz.IRect,现在都有新的方法get_area()
  • 现在可以直接从文件创建像素图,使用新构造函数fitz.Pixmap(filename)
  • 像素图构造函数*fitz.Pixmap(image)*相应地进行了扩展。
  • fitz.Rect现在可以使用所有可能的点和坐标组合创建。
  • 现在所有 PyMuPDF 类和方法都包含 doc 字符串,大多数是由 SWIG 自动生成的。虽然 PyMuPDF 文档肯定更详细,但这个功能应该在使用 Python-aware IDE 进行编程时非常有帮助。
  • 一个新的文档方法*getPermits()*返回与当前访问文档相关的权限(打印、编辑、注释、复制),作为 Python 字典。
  • 现在不可变的身份矩阵是fitz.Identity
  • 新文档方法*select(list)*从文档中删除不包含在列表中的所有页面。页面也可以复制和重新排列。
  • 在我们的演示和示例集合中有各种改进和新成员。可能最显著的是:PDF_display 现在支持鼠标滚轮滚动,还有一个新的示例程序 wxTableExtract 允许图形化识别和提取文档中的表数据。
  • fitz.open() 现在是 fitz.Document() 的别名。
  • 新的像素图方法 tobytes() 可以返回一个按 PNG 图像格式排列的 bytearray。
  • 新的像素图方法 samplesRGB() 提供一个剥离了 alpha 字节的 samples 版本(仅限 RGB 颜色空间)。
  • 新的像素图方法 samplesAlpha() 仅提供 samples 区域的 alpha 字节。
  • 新的迭代器 fitz.Pages(doc) 可以遍历文档的页面集合。
  • 新的矩阵方法 invert()(计算矩阵的逆)、concat()(计算矩阵乘积)、pretranslate()(执行移位操作)。
  • 新的 IRect 方法 intersect()(与另一个矩形的交集)、translate()(执行移位操作)。
  • 新的 Rect 方法 intersect()(与另一个矩形的交集)、transform()(矩形的变换)、include_point()(扩展矩形以包含一个点)、include_rect()(扩展矩形以包含另一个矩形)。
  • 记录了 Point.transform()(使用矩阵转换点)。
  • MatrixIRectRectPoint 类现在支持紧凑的、代数形式的操作。
  • 现在可以使用调用模式 doc.save(doc.name, incremental=True) 进行增量保存更改。
  • 可以通过文档方法 set_metadata() 删除、设置或更改 PDF 的元数据。支持增量保存。
  • 可以使用文档方法 set_toc(list) 删除、设置或更改 PDF 的书签(或目录)。支持增量保存。

您对本页有何反馈?


本软件按原样提供,没有明示或暗示的任何保证。本软件根据许可证分发,除非在许可证条款明确授权,否则不得复制、修改或分发。请参考 artifex.com 的许可信息或联系位于美国加利福尼亚州旧金山 Mesa Street 39 号 108A 套房的 Artifex Software Inc. 了解更多信息。

此文档覆盖所有版本,直到 1.24.4。

[外链图片转存中…(img-25VQaTwJ-1718851590747)]

相关文章
|
4月前
|
存储 文字识别 自然语言处理
PyMuPDF 1.24.4 中文文档(五)(2)
PyMuPDF 1.24.4 中文文档(五)
118 3
|
4月前
|
XML 存储 数据安全/隐私保护
PyMuPDF 1.24.4 中文文档(五)(4)
PyMuPDF 1.24.4 中文文档(五)
72 0
|
4月前
|
存储 文字识别 数据安全/隐私保护
PyMuPDF 1.24.4 中文文档(十三)(4)
PyMuPDF 1.24.4 中文文档(十三)
160 0
|
4月前
|
存储 编解码 API
PyMuPDF 1.24.4 中文文档(十三)(1)
PyMuPDF 1.24.4 中文文档(十三)
73 0
|
4月前
|
存储 编解码 Unix
PyMuPDF 1.24.4 中文文档(十三)(2)
PyMuPDF 1.24.4 中文文档(十三)
96 0
|
4月前
|
编解码 文字识别 Linux
PyMuPDF 1.24.4 中文文档(十三)(3)
PyMuPDF 1.24.4 中文文档(十三)
216 0
|
4月前
PyMuPDF 1.24.4 中文文档(十一)(4)
PyMuPDF 1.24.4 中文文档(十一)
59 0
|
4月前
|
XML 文字识别 前端开发
PyMuPDF 1.24.4 中文文档(十一)(5)
PyMuPDF 1.24.4 中文文档(十一)
118 0
|
4月前
|
机器学习/深度学习 Python
PyMuPDF 1.24.4 中文文档(十一)(3)
PyMuPDF 1.24.4 中文文档(十一)
50 0
|
4月前
|
存储 JavaScript 前端开发
PyMuPDF 1.24.4 中文文档(十一)(1)
PyMuPDF 1.24.4 中文文档(十一)
42 0