工具#

这个类是一个实用方法和属性的集合,主要与内存管理有关。为了简化和加速其使用,当导入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()

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

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 开始。

Return type:

整型

Returns:

一个唯一的正整数。

set_annot_stem(stem=None)#
  • v1.18.6 中的新功能

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

Parameters:

stem (str) – 如果省略,将返回当前值,默认值为“fitz”。注释、字段/小部件和链接在技术上都是PDF文档中同一类型对象的子类型 (/Annot)。一个/Annot对象可以在某一页面内赋予唯一标识符。对于每个适用的子类型,PyMuPDF 分别生成标识符“stem-Annn”、“stem-Wnnn”或“stem-Lnnn”。数字“nnn”用于确保所需的唯一性。

Return type:

字符串

Returns:

当前值。

set_small_glyph_heights(on=None)#
  • v1.18.5中的新功能

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

Parameters:

(布尔值) – 如果省略或 None, 将返回当前设置。对于其他值,将应用 bool() 函数来设置全局变量。如果 True, Page.search_for()Page.get_text() 方法将返回具有 字体大小 的高度的字符、跨度、行或块的边界框。如果 False (导入 PyMuPDF 时的标准设置), 边界框高度将基于字体属性,通常等于 行高

Return type:

布尔值

Returns:

注意

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

set_subset_fontnames(on=None)#
  • v1.18.9中的新功能

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

Parameters:

开启 (布尔值) – 如果省略 / None,将返回当前设置。评估为 TrueFalse 的参数设置一个全局变量。如果 True,选项 “dict”, “json”, “rawdict” 和 “rawjson” 将返回例如 "NOHSJV+Calibri-Light",否则仅返回 "Calibri-Light"(默认值)。该设置在更改之前一直有效。

Return type:

布尔值

Returns:

注意

除了上述提到的内容,其他文本提取变体不受此影响。这尤其适用于选项“xml”、“xhtml”和“html”,它们基于MuPDF代码。它们提取字体名称 "Calibri-Light",甚至只是 家族 名称 – Calibri 在此示例中。

unset_quad_corrections(on=None)#
  • v1.18.10中的新特性

启用/禁用 PyMuPDF 特定代码,该代码在遇到 Page.get_text() 文本提取中的无效字符时尝试重建有效字符四边形。该代码依赖于某些字体属性(上升沿和下降沿),在罕见情况下不存在并导致尝试访问它们时发生段错误。此方法在 PyMuPDF 中设置一个全局参数,抑制该代码的执行。

Parameters:

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

Return type:

布尔值

Returns:

store_shrink(percent)#

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

Parameters:

percent (int) – 当前大小与可用空间的百分比。如果超过100,存储空间将被清空;如果为零,则不会发生任何事情。MuPDF的缓存策略是“最近最少使用”,所以低使用率的元素会优先被删除。

Return type:

整型

Returns:

新的当前商店大小。根据情况,大小减少可能大于请求的百分比。

show_aa_level()#
  • 版本 1.16.14 的新功能

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

Return type:

字典

Returns:

一个字典,具有以下初始内容: {'graphics': 8, 'text': 8, 'graphics_min_line_width': 0.0}.

set_aa_level(level)#
  • 版本 1.16.14 中的新功能

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

Parameters:

级别 (整数) – 一个范围在 0 和 8 之间的整数。超出此范围的值将被默默地改为有效值。该值将在当前会话中一直有效,或直到再次更改为止。

reset_mupdf_warnings()#
  • 版本 1.16.0 中的新功能

空的 MuPDF 警告消息缓冲区。

mupdf_display_errors(value=None)#

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

Parameters:

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

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

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

  • 导入PyMuPDF时,此值为True

Returns:

当前设置为

  • 版本 1.16.8 中的新功能

mupdf_display_warnings(value=None)#

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

Parameters:

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

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

  • 不管这个设置如何,MuPDF 警告将始终存储在警告存储中。

  • 导入PyMuPDF时,此值为True

Returns:

当前设置为

  • 版本 1.16.8 中的新功能

mupdf_warnings(reset=True)#
  • 版本 1.16.0 中的新功能

将所有存储的 MuPDF 消息作为字符串返回,并带有插入的换行符。

Parameters:

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

fitz_config#

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

关键

支持包括 …

plotter-g

灰度颜色空间渲染

plotter-rgb

RGB颜色空间渲染

绘图器-cmyk

CMYK颜色空间渲染

绘图器-n

叠加渲染

pdf

PDF 文档

xps

XPS文档

svg

SVG文档

cbz

CBZ 文档

图像

图像文档

html

HTML 文档

电子出版物

EPUB 文档

jpx

JPEG2000 图像

js

JavaScript

豆腐

所有豆腐字体

豆腐-中日韩字体

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

tofu-cjk-ext

CJK字体扩展

豆腐-CJK-语言

CJK 字体语言扩展

豆腐表情符号

豆腐表情符号字体

豆腐历史

TOFU 历史字体

豆腐符号

豆腐符号字体

豆腐硅

豆腐硅字体

icc

ICC 配置文件

py-memory

使用 Python 内存管理 [2]

base14

Base-14 字体(应该始终为真)

有关“TOFU”一词的解释,请参阅this Wikipedia article

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}
Return type:

字典

store_maxsize#

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

Return type:

整型

store_size#

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

Return type:

整型

示例会话#

>>> 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以获取更多信息。