工具#

此类是实用方法和属性的集合,主要围绕内存管理。为了简化和加速其使用,在导入 PyMuPDF 时,它会自动实例化为名称 TOOLS

方法 / 属性

描述

Tools.gen_id()

生成唯一标识符

Tools.store_shrink()

收缩可存储对象缓存 [1]

Tools.mupdf_warnings()

返回累积的 MuPDF 警告

Tools.mupdf_display_errors()

控制是否将 MuPDF 错误显示为消息。

Tools.mupdf_display_warnings()

控制是否将 MuPDF 警告显示为消息。

Tools.reset_mupdf_warnings()

清空 MuPDF 警告/错误消息缓冲区。

Tools.set_aa_level()

设置抗锯齿值

Tools.set_annot_stem()

设置新注释/链接 ID 的前缀

Tools.set_small_glyph_heights()

使用小 bbox 高度进行搜索和提取

Tools.set_subset_fontnames()

控制是否抑制子集字体名称标签

Tools.show_aa_level()

返回抗锯齿值

Tools.unset_quad_corrections()

禁用 PyMuPDF 特定的代码

Tools.fitz_config

PyMuPDF 的配置设置

Tools.store_maxsize

最大可存储对象缓存大小

Tools.store_size

当前可存储对象缓存大小

类 API

class Tools#
gen_id()#

一个便捷方法,返回一个唯一的正整数,每次调用时会加 1。示例用法包括在数据库中创建唯一键 - 它的创建速度应该比使用时间戳快一个数量级。

注意

MuPDF 在 v1.14.0 中已放弃对此的支持,因此我们重新实现了一个类似的功能,具有以下区别

  • 它不是 MuPDF 全局上下文的一部分,也不是线程安全的(这不是问题,因为 PyMuPDF 本身不支持线程)。

  • 它实现为 int 类型。这意味着最大数字是 sys.maxsize。如果此数字超出,计数器将从 1 重新开始。

返回类型:

int

返回:

一个唯一的正整数。

set_annot_stem(stem=None)#
  • v1.18.6 新增

设置或查询新注释、字段或链接 ID 的前缀。

参数:

stem (str) – 如果省略,则返回当前值,默认值为“fitz”。从技术上讲,注释、字段/控件和链接是 PDF 文档中同一类型对象 (/Annot) 的子类型。可以为 /Annot 对象指定页面内的唯一标识符。对于每个适用的子类型,PyMuPDF 分别生成标识符“stem-Annn”、“stem-Wnnn”或“stem-Lnnn”。数字“nnn”用于强制实现所需的唯一性。

返回类型:

str

返回:

当前值。

set_small_glyph_heights(on=None)#
  • v1.18.5 新增

在文本提取和文本搜索方法中设置或查询缩小的 bbox 高度。

参数:

on (bool) – 如果省略或为 None,则返回当前设置。对于其他值,将应用 bool() 函数来设置全局变量。如果为 TruePage.search_for()Page.get_text() 方法将返回高度为 font size 的字符、跨度、行或块的 bboxes。如果为 False(导入 PyMuPDF 时的标准设置),则 bbox 高度将基于字体属性,通常等于 line height

返回类型:

bool

返回:

TrueFalse

注意

直接封装 MuPDF 代码的文本提取选项“xml”、“xhtml”和“html”不受此影响。

set_subset_fontnames(on=None)#
  • v1.18.9 新增

控制文本提取中子集字体名称标签的抑制。

参数:

on (bool) – 如果省略 / None,则返回当前设置。计算结果为 TrueFalse 的参数会设置一个全局变量。如果为 True,选项“dict”、“json”、“rawdict”和“rawjson”将返回例如 "NOHSJV+Calibri-Light",否则只返回 "Calibri-Light"(默认值)。该设置会一直有效,直到再次更改。

返回类型:

bool

返回:

TrueFalse

注意

除上述选项外,其他文本提取变体不受此影响。对于基于 MuPDF 代码的选项“xml”、“xhtml”和“html”尤其如此。它们提取字体名称 "Calibri-Light",甚至只提取名称 – 在此示例中为 Calibri

unset_quad_corrections(on=None)#
  • v1.18.10 新增

启用/禁用 PyMuPDF 特定的代码,该代码在 Page.get_text() 文本提取中遇到无效数据时尝试重建有效的字符 quads。此代码依赖于某些字体属性(ascender 和 descender),这些属性在极少数情况下不存在,并在尝试访问时导致分段错误。此方法在 PyMuPDF 中设置一个全局参数,用于抑制此代码的执行。

参数:

on (bool) – 如果省略或为 None,则返回当前设置。对于其他值,应用 bool() 函数来设置全局变量。如果为 True,PyMuPDF 将不会尝试访问相应的字体属性,而是使用值 ascender=0.8descender=-0.2

返回类型:

bool

返回:

TrueFalse

store_shrink(percent)#

按当前大小的百分比减少可存储对象缓存。

参数:

percent (int) – 要释放的当前大小的百分比。如果大于等于 100,缓存将被清空;如果为零,则什么也不会发生。MuPDF 的缓存策略是“最近最少使用”,因此使用频率低的元素会首先被删除。

返回类型:

int

返回:

新的当前缓存大小。根据情况,大小缩减可能大于请求的百分比。

show_aa_level()#
  • 版本 1.16.14 新增

返回当前抗锯齿值。这些值控制图形和文本元素的渲染质量。

返回类型:

dict

返回:

一个字典,其初始内容如下:{'graphics': 8, 'text': 8, 'graphics_min_line_width': 0.0}

set_aa_level(level)#
  • 版本 1.16.14 新增

设置用于抗锯齿的新位数。图形和文本渲染当前使用相同的值。这在未来的 MuPDF 版本中可能会改变。

参数:

level (int) – 一个介于 0 到 8 之间的整数。超出此范围的值将静默更改为有效值。该值将在当前会话期间一直有效,直到再次更改。

reset_mupdf_warnings()#
  • 版本 1.16.0 新增

清空 MuPDF 警告消息缓冲区。

mupdf_display_errors(value=None)#

控制是否将 MuPDF 错误显示为 PyMuPDF 消息。

参数:

value

  • 如果为 None,则当前设置保持不变。

  • 否则将当前设置更改为 bool(value);如果为 True,则未来的 MuPDF 错误将显示为 消息

  • 无论此设置如何,MuPDF 错误将始终存储在警告存储中。

  • 导入 PyMuPDF 后,此值为 True

返回:

当前设置,为 TrueFalse

  • 版本 1.16.8 新增

mupdf_display_warnings(value=None)#

控制是否将 MuPDF 警告显示为 PyMuPDF 消息。

参数:

value

  • 如果为 None,则当前设置保持不变。

  • 否则将当前设置更改为 bool(value);如果为 True,则未来的 MuPDF 警告将显示为 消息

  • 无论此设置如何,MuPDF 警告将始终存储在警告存储中。

  • 导入 PyMuPDF 后,此值为 True

返回:

当前设置,为 TrueFalse

  • 版本 1.16.8 新增

mupdf_warnings(reset=True)#
  • 版本 1.16.0 新增

将所有存储的 MuPDF 消息作为带有散布换行符的字符串返回。

参数:

reset (bool) – (版本 1.16.7 新增)是否自动清空存储。

fitz_config#

一个字典,包含用于配置 PyMuPDF 和 MuPDF 的实际值。另请参阅安装章节。这是键的概述,每个键描述一个支持方面的状态。

支持包含 …

plotter-g

灰度颜色空间渲染

plotter-rgb

RGB 颜色空间渲染

plotter-cmyk

CMYK 颜色空间渲染

plotter-n

叠印渲染

pdf

PDF 文档

xps

XPS 文档

svg

SVG 文档

cbz

CBZ 文档

img

IMG 文档

html

HTML 文档

epub

EPUB 文档

jpx

JPEG2000 图像

js

JavaScript

tofu

所有 TOFU 字体

tofu-cjk

CJK 字体子集(中国、日本、韩国)

tofu-cjk-ext

CJK 字体扩展

tofu-cjk-lang

CJK 字体语言扩展

tofu-emoji

TOFU emoji 字体

tofu-historic

TOFU 历史字体

tofu-symbol

TOFU 符号字体

tofu-sil

TOFU SIL 字体

icc

ICC 配置文件

py-memory

使用 Python 内存管理 [2]

base14

Base-14 字体(应始终为 true)

有关术语“TOFU”的解释,请参阅此维基百科文章

In [1]: import pymupdf
In [2]: TOOLS.fitz_config
Out[2]:
{'plotter-g': True,
 'plotter-rgb': True,
 'plotter-cmyk': True,
 'plotter-n': True,
 'pdf': True,
 'xps': True,
 'svg': True,
 'cbz': True,
 'img': True,
 'html': True,
 'epub': True,
 'jpx': True,
 'js': True,
 'tofu': False,
 'tofu-cjk': True,
 'tofu-cjk-ext': False,
 'tofu-cjk-lang': False,
 'tofu-emoji': False,
 'tofu-historic': False,
 'tofu-symbol': False,
 'tofu-sil': False,
 'icc': True,
 'py-memory': False,
 'base14': True}
返回类型:

dict

store_maxsize#

最大可存储对象缓存大小(字节)。PyMuPDF 生成时使用值 268’435’456(256 MB,默认值),因此您应该始终在此处看到此值。如果此值为零,则允许“无限”增长。

返回类型:

int

store_size#

当前可存储对象缓存大小(字节)。此值可能随着每次使用 PyMuPDF 函数而改变(并且通常会增加)。只有当 Tools.store_maxsize 即将被超出时,它才会(自动)减少:在这种情况下,MuPDF 会逐出低使用率的对象,直到该值再次处于范围内。

返回类型:

int

示例会话#

>>> import pymupdf
# print the maximum and current cache sizes
>>> pymupdf.TOOLS.store_maxsize
268435456
>>> pymupdf.TOOLS.store_size
0
>>> doc = pymupdf.open("demo1.pdf")
# pixmap creation puts lots of object in cache (text, images, fonts),
# apart from the pixmap itself
>>> pix = doc[0].get_pixmap(alpha=False)
>>> pymupdf.TOOLS.store_size
454519
# release (at least) 50% of the storage
>>> pymupdf.TOOLS.store_shrink(50)
13471
>>> pymupdf.TOOLS.store_size
13471
# get a few unique numbers
>>> pymupdf.TOOLS.gen_id()
1
>>> pymupdf.TOOLS.gen_id()
2
>>> pymupdf.TOOLS.gen_id()
3
# close document and see how much cache is still in use
>>> doc.close()
>>> pymupdf.TOOLS.store_size
0
>>>

脚注


本软件按“原样”提供,不附带任何明示或暗示的担保。本软件根据许可协议分发,除该许可协议明确授权外,不得复制、修改或分发。有关许可信息,请参阅 artifex.com 或联系 Artifex Software Inc.,地址:39 Mesa Street, Suite 108A, San Francisco CA 94129, United States 获取更多信息。