PyMuPDF 1.24.4 中文文档(十)(4)https://developer.aliyun.com/article/1559524
Tools
此类是一组围绕内存管理的实用方法和属性。为了简化和加速其使用,在导入 PyMuPDF 时,它会自动实例化为 TOOLS。
方法 / 属性 | 描述 |
Tools.gen_id() |
生成唯一标识符 |
Tools.store_shrink() |
缩小可存储缓存 [1] |
Tools.mupdf_warnings() |
返回累积的 MuPDF 警告 |
Tools.mupdf_display_errors() |
返回累积的 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
)的子类型。每个适用的子类型,PyMuPDF 分别生成标识符“stem-Annn”,“stem-Wnnn”或“stem-Lnnn”。数字“nnn”用于强制要求的唯一性。
返回类型:
字符串
返回:
当前值。
set_small_glyph_heights(on=None)
- 新版本 v1.18.5 中
在文本提取和文本搜索方法中设置或查询减少的 bbox 高度。
参数:
on (bool) – 如果省略或为 None
,则返回当前设置。对于其他值,将应用 bool() 函数以设置全局变量。如果为 True
,Page.search_for()
和 Page.get_text()
方法将返回具有 字体大小 高度的字符、跨度、行或块 bbox。如果为 False
(PyMuPDF 导入时的标准设置),bbox 高度将基于字体属性,并且通常等于 行高。
返回类型:
布尔值
返回:
真 或 假。
注意
直接包装 MuPDF 代码的文本提取选项“xml”,“xhtml”和“html”不受此影响。
set_subset_fontnames(on=None)
- 新版本 v1.18.9 中
控制文本提取中子集字体名称标签的抑制。
参数:
on (bool) – 如果省略 / None
,则返回当前设置。评估为 True
或 False
的参数设置一个全局变量。如果为 True
,选项“dict”,“json”,“rawdict”和“rawjson”将返回例如 "NOHSJV+Calibri-Light"
,否则仅返回 "Calibri-Light"
(默认值)。设置保持有效直到再次更改。
返回类型:
布尔值
返回:
真 或 假。
注意
除了上述提到的情况外,没有其他文本提取变体受到影响。对于基于 MuPDF 代码的选项“xml”,“xhtml”和“html”,特别是如此。它们提取字体名称"Calibri-Light"
,甚至只提取family名称 - 在本例中是Calibri
。
unset_quad_corrections(on=None)
- 新版本 v1.18.10 中
启用/禁用 PyMuPDF 特定代码,当在Page.get_text()
文本提取中遇到无意义的内容时,尝试重建有效的字符四边形。这段代码依赖于某些字体属性(ascender 和 descender),这些属性在某些情况下不存在,并在试图访问它们时导致分段错误。此方法在 PyMuPDF 中设置一个全局参数,该参数抑制此代码的执行。
参数:
on (bool) – 如果省略或为 None
,则返回当前设置。对于其他值,将应用 bool() 函数以设置全局变量。如果为 True
,PyMuPDF 将不尝试访问相应的字体属性,并使用值 ascender=0.8
和 descender=-0.2
。
返回类型:
布尔值
返回:
真 或 假。
store_shrink(percent)
通过其当前大小的百分比减少可存储的高速缓存。
参数:
percent (int) – 当前大小的百分比以释放。如果是 100+,存储将被清空;如果为零,则不会发生任何操作。MuPDF 的缓存策略是“最近最少使用”,因此低使用率的元素首先被删除。
返回类型:
整数
返回:
新的当前存储大小。根据情况,大小减小可能大于请求的百分比。
show_aa_level()
- 版本 1.16.14 中的新功能
返回当前抗锯齿值。这些值控制图形和文本元素的呈现质量。
返回类型:
字典
返回类型:
一个字典,初始内容如下:{'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)
- 版本 1.16.8 中的新功能
显示或设置是否应显示 MuPDF 错误。
参数:
value (bool) – 如果不是布尔值,则返回当前设置。如果为真,则在 sys.stderr 上显示 MuPDF 错误,否则将其抑制。无论如何,消息继续存储在警告存储中。在导入 PyMuPDF 时,此值为 True。
返回:
True 或 False
mupdf_warnings(reset=True)
- 版本 1.16.0 中的新功能
返回所有存储的 MuPDF 消息作为带有插入换行符的字符串。
参数:
reset (bool) – (1.16.7 版本中的新功能) 是否自动清空存储。
fitz_config
包含用于配置 PyMuPDF 和 MuPDF 的实际值的字典。还请参阅安装章节。这是一个概述键的字典,每个键描述一个支持方面的状态。
Key | 支持包括 … |
plotter-g | 灰度色彩空间渲染 |
plotter-rgb | RGB 色彩空间渲染 |
plotter-cmyk | CMYK 色彩空间渲染 |
plotter-n | 印刷过渡渲染 |
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 表情符号字体 |
tofu-historic | TOFU 历史字体 |
tofu-symbol | TOFU 符号字体 |
tofu-sil | TOFU SIL 字体 |
icc | ICC 配置文件 |
py-memory | 使用 Python 内存管理 [2] |
base14 | Base-14 字体(应始终为真) |
有关“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}
返回类型:
字典
store_maxsize
最大存储缓存大小(以字节为单位)。PyMuPDF生成的默认值为 268’435’456(256 MB),因此您应该始终在这里看到此值。如果此值为零,则允许“无限”增长。
返回类型:
整数
store_size
当前存储缓存大小(以字节为单位)。这个值可能会随着每次使用PyMuPDF函数而改变(通常会增加)。只有当将要超过Tools.store_maxsize
时,它才会(自动)减少:在这种情况下,MuPDF会逐出低使用对象,直到值再次在范围内。
返回类型:
整数
示例会话
>>> 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获取许可信息,或联系位于美国加利福尼亚州圣弗朗西斯科 94129 Mesa 街 39 号 108A 套房的 Artifex Software Inc.获取更多信息。
此文档涵盖所有版本直至 1.24.4。
示例会话
>>> 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获取许可信息,或联系位于美国加利福尼亚州圣弗朗西斯科 94129 Mesa 街 39 号 108A 套房的 Artifex Software Inc.获取更多信息。
此文档涵盖所有版本直至 1.24.4。