Tools#
该类是一个实用方法和属性的集合,主要用于内存管理。为了简化和加速其使用,当PyMuPDF被导入时,它会自动实例化为名为 TOOLS 的对象。
方法 / 属性 |
描述 |
---|---|
生成唯一的标识符 |
|
缩小存储缓存 [3] |
|
返回累积的MuPDF警告 |
|
控制是否将MuPDF错误作为消息显示 |
|
控制是否将MuPDF警告作为消息显示 |
|
清空MuPDF警告/错误消息缓冲区 |
|
设置抗锯齿值 |
|
设置新注释/链接ID的前缀 |
|
使用较小的bbox高度进行搜索和提取 |
|
控制子集字体名标签的抑制 |
|
返回抗锯齿值 |
|
禁用PyMuPDF特有的代码 |
|
PyMuPDF的配置设置 |
|
最大存储缓存大小 |
|
当前存储缓存大小 |
类 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() 函数来设置全局变量。如果为True
,则Page.search_for()
和Page.get_text()
方法返回的字符、跨度、行或块的bbox高度将是 字体大小 。如果为False
(PyMuPDF导入时的标准设置),则bbox高度将基于字体属性,并通常等于 行高 。- 返回类型:
bool
- 返回:
True 或 False。
备注
文本提取选项“xml”、“xhtml”和“html”,这些直接封装了MuPDF代码,不受此设置的影响。
- set_subset_fontnames(on=None)#
新增于v1.18.9
控制在文本提取时是否抑制子集字体名称标签。
- 参数:
on (bool) – 如果省略或为
None
,则返回当前设置。将传入True
或False
值会设置全局变量。如果为True
,选项”dict”、”json”、”rawdict”和”rawjson”将返回"NOHSJV+Calibri-Light"
,否则将仅返回"Calibri-Light"
(默认值)。该设置会一直生效,直到再次更改。- 返回类型:
bool
- 返回:
True 或 False。
备注
除上述提到的选项外,其他文本提取变体不受此设置的影响。特别是对于”xml”、”xhtml”和”html”选项,这些基于MuPDF代码的选项,会提取字体名称
"Calibri-Light"
,甚至只是 字体家族 名称——例如Calibri
。
- unset_quad_corrections(on=None)#
新增于v1.18.10
启用/禁用PyMuPDF特有的代码,该代码在遇到
Page.get_text
文本提取中的无效字符四边形时,尝试重建有效的字符四边形。该代码依赖于某些字体属性(升高字形和下降字形),在某些罕见情况下,这些属性不存在,并且在尝试访问时会导致段错误。此方法设置PyMuPDF中的全局参数,抑制此代码的执行。- 参数:
on (bool) – 如果省略或为
None
,则返回当前设置。对于其他值,将应用 bool() 函数来设置全局变量。如果为True
,PyMuPDF将不尝试访问相应的字体属性,而是使用ascender=0.8
和descender=-0.2
作为默认值。- 返回类型:
bool
- 返回:
True 或 False。
- store_shrink(percent)#
按当前大小的百分比减少存储缓存。
- 参数:
percent (int) – 要释放的当前大小的百分比。如果为100或更大,缓存将被清空;如果为零,则不做任何操作。MuPDF的缓存策略是“最近最少使用”,因此最少使用的元素将被优先删除。
- 返回类型:
int
- 返回:
新的当前存储大小。根据情况,减少的大小可能大于请求的百分比。
- show_aa_level()#
新增于v1.16.14
返回当前的抗锯齿值。这些值控制图形和文本元素的渲染质量。
- 返回类型:
dict
- 返回:
一个字典,初始内容为:
{'graphics': 8, 'text': 8, 'graphics_min_line_width': 0.0}
。
- set_aa_level(level)#
新增于v1.16.14
设置用于抗锯齿的位数。当前该值适用于图形和文本渲染。未来的MuPDF版本可能会有所不同。
- 参数:
level (int) – 一个介于0到8之间的整数。范围之外的值会被自动更改为有效值。该值将在当前会话期间或直到再次更改为止保持有效。
- reset_mupdf_warnings()#
新增于v1.16.0
清空MuPDF警告消息缓冲区。
- mupdf_display_errors(value=None)#
控制是否应将MuPDF错误显示为|PyMuPDF|消息。
- 参数:
value –
如果为
None
,当前设置保持不变。否则更改当前设置为
bool(value)
;如果为 True ,未来的MuPDF错误将作为消息显示。无论此设置如何,MuPDF错误总是会存储在警告存储区中。
在导入 PyMuPDF 时,该值默认为 True 。
- 返回:
当前设置为 True 或 False 。
新增于v1.16.8
- mupdf_display_warnings(value=None)#
控制是否应将MuPDF警告显示为|PyMuPDF|消息。
- 参数:
value –
如果为
None
,当前设置保持不变。否则更改当前设置为
bool(value)
; 如果为 True ,未来的MuPDF警告将作为消息显示。无论此设置如何,MuPDF警告总是会存储在警告存储区中。
在导入 PyMuPDF 时,该值默认为 True 。
- 返回:
当前设置为 True 或 False 。
新增于v1.16.8
- mupdf_warnings(reset=True)#
新增于v1.16.0
返回所有存储的MuPDF消息,格式为字符串并带有换行符。
- 参数:
reset (bool) – (v1.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表情符号字体
tofu-historic
TOFU历史字体
tofu-symbol
TOFU符号字体
tofu-sil
TOFU SIL字体
icc
ICC色彩配置文件
py-memory
使用Python内存管理 [4]
base14
基础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
This class is a collection of utility methods and attributes, mainly around memory management. To simplify and speed up its use, it is automatically instantiated under the name TOOLS when PyMuPDF is imported.
Method / Attribute |
Description |
---|---|
generate a unique identifier |
|
shrink the storables cache [1] |
|
return the accumulated MuPDF warnings |
|
control whether MuPDF errors are displayed as messages. |
|
control whether MuPDF warnings are displayed as messages. |
|
empty MuPDF warnings/errors message buffer. |
|
set the anti-aliasing values |
|
set the prefix of new annotation / link ids |
|
search and extract using small bbox heights |
|
control suppression of subset fontname tags |
|
return the anti-aliasing values |
|
disable PyMuPDF-specific code |
|
configuration settings of PyMuPDF |
|
maximum storables cache size |
|
current storables cache size |
Class API
Example Session#
Example Session
>>> import pymupdf
# 打印最大和当前缓存大小
>>> pymupdf.TOOLS.store_maxsize
268435456
>>> pymupdf.TOOLS.store_size
0
>>> doc = pymupdf.open("demo1.pdf")
# 创建pixmap会将许多对象放入缓存(文本、图像、字体),
# 除了pixmap本身
>>> pix = doc[0].get_pixmap(alpha=False)
>>> pymupdf.TOOLS.store_size
454519
# 释放(至少)50%的存储空间
>>> pymupdf.TOOLS.store_shrink(50)
13471
>>> pymupdf.TOOLS.store_size
13471
# 获取几个唯一的编号
>>> pymupdf.TOOLS.gen_id()
1
>>> pymupdf.TOOLS.gen_id()
2
>>> pymupdf.TOOLS.gen_id()
3
# 关闭文档并查看仍然使用的缓存量
>>> doc.close()
>>> pymupdf.TOOLS.store_size
0
>>> 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
>>>
Footnotes