工具#
这个类是一个实用方法和属性的集合,主要与内存管理有关。为了简化和加速其使用,当导入PyMuPDF时,它会自动以TOOLS的名称实例化。
方法 / 属性 |
描述 |
|---|---|
生成一个唯一标识符 |
|
缩小可存储缓存 [1] |
|
返回累积的 MuPDF 警告 |
|
控制是否将MuPDF错误显示为消息。 |
|
控制是否显示MuPDF警告信息。 |
|
清空 MuPDF 警告/错误消息缓冲区。 |
|
设置抗锯齿值 |
|
设置新注释/链接ID的前缀 |
|
使用小边框高度进行搜索和提取 |
|
控制子集字体名称标签的抑制 |
|
返回抗锯齿值 |
|
禁用 PyMuPDF 特定代码 |
|
PyMuPDF 的配置设置 |
|
最大可存储缓存大小 |
|
当前可存储缓存大小 |
类 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,将返回当前设置。评估为True或False的参数设置一个全局变量。如果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.8和descender=-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
>>>
脚注