PyMuPDF 1.24.4 中文文档(十二)(2)https://developer.aliyun.com/article/1559502
文档权限
Code | 允许的操作 |
PDF_PERM_PRINT | 打印文档 |
PDF_PERM_MODIFY | 修改文档内容 |
PDF_PERM_COPY | 复制或提取文本和图形 |
PDF_PERM_ANNOTATE | 添加或修改文本注释和交互式表单字段 |
PDF_PERM_FORM | 填写表单并签署文档 |
PDF_PERM_ACCESSIBILITY | 已过时,总是允许 |
PDF_PERM_ASSEMBLE | 插入、旋转或删除页面、书签、缩略图图像 |
PDF_PERM_PRINT_HQ | 高质量打印 |
PDF 可选内容代码
Code | 含义 |
PDF_OC_ON | 暂时将一个 OCG 设置为开启状态 |
PDF_OC_TOGGLE | 暂时切换 OCG 状态 |
PDF_OC_OFF | 暂时将一个 OCG 设置为关闭状态 |
PDF 加密方法代码
Code | 含义 |
PDF_ENCRYPT_KEEP | 不更改 |
PDF_ENCRYPT_NONE | 移除任何加密 |
PDF_ENCRYPT_RC4_40 | RC4 40 位 |
PDF_ENCRYPT_RC4_128 | RC4 128 位 |
PDF_ENCRYPT_AES_128 | 高级加密标准 128 位 |
PDF_ENCRYPT_AES_256 | 高级加密标准 256 位 |
PDF_ENCRYPT_UNKNOWN | 未知 |
字体文件扩展名
表格显示了从 PDF 中提取的字体文件缓冲区时应使用的文件扩展名。此字符串由 Document.get_page_fonts()
、Page.get_fonts()
和 Document.extract_font()
返回。
Ext | 描述 |
ttf | TrueType 字体 |
pfa | ASCII 字体的 Postscript(各种子类型) |
cff | Type1C 字体(相当于 Type1 的压缩字体) |
cid | 字符标识符字体(后缀格式) |
otf | 开放类型字体 |
n/a | 无法提取,例如 PDF 基础 14 字体、Type 3 字体和其他字体 |
文本对齐
TEXT_ALIGN_LEFT
0 – 左对齐。
TEXT_ALIGN_CENTER
1 – 居中对齐。
TEXT_ALIGN_RIGHT
2 – 右对齐。
TEXT_ALIGN_JUSTIFY
3 – 两端对齐。
文本提取标志
控制被解析为 TextPage 的数据量的选项位 – 此类主要仅在 PyMuPDF 内部使用。
对于 PyMuPDF 程序员,在所有文本搜索和文本提取方法的 flags
整数参数中,可以使用 Python 的 |
运算符的某种组合,或者简单地使用 +
。根据各个方法的不同,默认组合会使用不同的值。请使用适合你情况的值。特别是要确保除非确实需要,否则关闭图像提取。这会对性能和内存有显著影响!
TEXT_PRESERVE_LIGATURES
1 – 如果设置,连字将以其原始形式传递到应用程序。否则,连字将展开为其组成部分,例如连字“ffi”将展开为三个单独的字符 f、f 和 i。在 PyMuPDF 中默认为“开启”。MuPDF 支持以下 7 种连字:“ff”、“fi”、“fl”、“ffi”、“ffl”、“ft”、“st”。
TEXT_PRESERVE_WHITESPACE
2 – 如果设置,将传递空白字符。否则,任何类型的水平空白字符(包括水平制表符)将替换为可变宽度的空格字符。在 PyMuPDF 中默认为“开启”。
TEXT_PRESERVE_IMAGES
4 – 如果设置,图像将存储在 TextPage 中。这将导致在“blocks”、“dict”、“json”、“rawdict”、“rawjson”、“html”和“xhtml”类型的文本提取输出中存在(通常很大的!)二进制图像内容,并且在那里是默认的。然而,如果与“blocks”一起使用,则仅返回图像元数据,而不包含图像本身。
TEXT_INHIBIT_SPACES
8 – 如果设置,MuPDF 将不会尝试在字符之间存在较大间隙时添加缺失的空格字符。在 PDF 中,创建者通常不会插入空格以指示下一个字符的位置,而是提供直接的位置地址。在 PyMuPDF 中默认为“关闭” – 因此会生成空格。
TEXT_DEHYPHENATE
16 – 忽略行尾的连字符并与下一行连接。与文本搜索函数一起内部使用。但通常也可用:如果开启,文本提取将返回连接的文本行(或 span),第一行的结束连字符将被消除。因此,在不同行上的两个独立 span “first meth-” 和 “od leads to wrong results” 将连接为一个 span “first method leads to wrong results” 并相应更新 bboxes:结果 span 的字符将不再具有相同的 y 坐标。
TEXT_PRESERVE_SPANS
32 – 每个 span 生成一个新行。在 PyMuPDF 中未使用(“关闭”),但可供您使用。在“dict”、“json”、“rawdict”、“rawjson”中的每行将恰好包含一个 span。
TEXT_MEDIABOX_CLIP
64 – 如果设置,将忽略页面mediabox之外的字符。这是 PyMuPDF 的默认设置。
TEXT_CID_FOR_UNKNOWN_UNICODE
128 – 如果设置,将使用原始字符代码而不是 U+FFFD。这是 PyMuPDF 中文本提取的默认设置。如果你希望检测编码信息缺失或不确定时,请切换此标志并扫描结果文本中是否存在 U+FFFD(即 chr(0xfffd)
)字符。
下列常数代表文本提取和搜索的默认组合:
TEXTFLAGS_TEXT
TEXT_PRESERVE_LIGATURES | TEXT_PRESERVE_WHITESPACE | TEXT_MEDIABOX_CLIP | TEXT_CID_FOR_UNKNOWN_UNICODE
TEXTFLAGS_WORDS
TEXT_PRESERVE_LIGATURES | TEXT_PRESERVE_WHITESPACE | TEXT_MEDIABOX_CLIP | TEXT_CID_FOR_UNKNOWN_UNICODE
TEXTFLAGS_BLOCKS
TEXT_PRESERVE_LIGATURES | TEXT_PRESERVE_WHITESPACE | TEXT_MEDIABOX_CLIP | TEXT_CID_FOR_UNKNOWN_UNICODE
TEXTFLAGS_DICT
TEXT_PRESERVE_LIGATURES | TEXT_PRESERVE_WHITESPACE | TEXT_MEDIABOX_CLIP | TEXT_PRESERVE_IMAGES | TEXT_CID_FOR_UNKNOWN_UNICODE
TEXTFLAGS_RAWDICT
TEXT_PRESERVE_LIGATURES | TEXT_PRESERVE_WHITESPACE | TEXT_MEDIABOX_CLIP | TEXT_PRESERVE_IMAGES | TEXT_CID_FOR_UNKNOWN_UNICODE
TEXTFLAGS_HTML
TEXT_PRESERVE_LIGATURES | TEXT_PRESERVE_WHITESPACE | TEXT_MEDIABOX_CLIP | TEXT_PRESERVE_IMAGES | TEXT_CID_FOR_UNKNOWN_UNICODE
TEXTFLAGS_XHTML
TEXT_PRESERVE_LIGATURES | TEXT_PRESERVE_WHITESPACE | TEXT_MEDIABOX_CLIP | TEXT_PRESERVE_IMAGES | TEXT_CID_FOR_UNKNOWN_UNICODE
TEXTFLAGS_XML
TEXT_PRESERVE_LIGATURES | TEXT_PRESERVE_WHITESPACE | TEXT_MEDIABOX_CLIP | TEXT_CID_FOR_UNKNOWN_UNICODE
TEXTFLAGS_SEARCH
TEXT_PRESERVE_LIGATURES | TEXT_PRESERVE_WHITESPACE | TEXT_MEDIABOX_CLIP | TEXT_DEHYPHENATE
链接目标类型
linkDest.kind
(链接目标类型)的可能值。
LINK_NONE
0 – 没有目标。指示一个虚拟链接。
返回类型:
int
LINK_GOTO
1 – 指向本文档中的一个位置。
返回类型:
int
LINK_URI
2 – 指向一个 URI,通常使用互联网语法指定的资源。
- PyMuPDF 将任何包含冒号且不以
file:
开头的外部链接视为LINK_URI
。
返回类型:
int
LINK_LAUNCH
3 – 启动(打开)另一个文件(任何“可执行”类型)。
- PyMuPDF 将任何以
file:
开头或不包含冒号的外部链接视为LINK_LAUNCH
。
返回类型:
int
LINK_NAMED
4 – 指向一个命名位置。
返回类型:
int
LINK_GOTOR
5 – 指向另一个 PDF 文档中的一个位置。
返回类型:
int
链接目标标志
注意:
这个整数的最右字节是一个位字段,所以使用 & 运算符测试这些位的真实性。
LINK_FLAG_L_VALID
1 (bit 0) 左上角 x 值有效
返回类型:
bool
LINK_FLAG_T_VALID
2 (bit 1) 左上角 y 值有效
返回类型:
bool
LINK_FLAG_R_VALID
4 (bit 2) 右下角 x 值有效
返回类型:
bool
LINK_FLAG_B_VALID
8 (bit 3) 右下角 y 值有效
返回类型:
bool
LINK_FLAG_FIT_H
16 (bit 4) 水平适合
返回类型:
bool
LINK_FLAG_FIT_V
32 (bit 5) 垂直适合
返回类型:
bool
LINK_FLAG_R_IS_ZOOM
64 (bit 6) 右下角 x 是一个缩放图。
返回类型:
bool
注释相关常量
详细内容请参阅 Adobe PDF References 第 8.4.5 章,第 615 页。
注释类型
这些标识符还涵盖链接和小部件:PDF 规范在技术上以相同的方式处理它们,而MuPDF(和 PyMuPDF)将它们视为三种基本不同的对象类型。
PDF_ANNOT_TEXT 0 PDF_ANNOT_LINK 1 # <=== Link object in PyMuPDF PDF_ANNOT_FREE_TEXT 2 PDF_ANNOT_LINE 3 PDF_ANNOT_SQUARE 4 PDF_ANNOT_CIRCLE 5 PDF_ANNOT_POLYGON 6 PDF_ANNOT_POLY_LINE 7 PDF_ANNOT_HIGHLIGHT 8 PDF_ANNOT_UNDERLINE 9 PDF_ANNOT_SQUIGGLY 10 PDF_ANNOT_STRIKE_OUT 11 PDF_ANNOT_REDACT 12 PDF_ANNOT_STAMP 13 PDF_ANNOT_CARET 14 PDF_ANNOT_INK 15 PDF_ANNOT_POPUP 16 PDF_ANNOT_FILE_ATTACHMENT 17 PDF_ANNOT_SOUND 18 PDF_ANNOT_MOVIE 19 PDF_ANNOT_RICH_MEDIA 20 PDF_ANNOT_WIDGET 21 # <=== Widget object in PyMuPDF PDF_ANNOT_SCREEN 22 PDF_ANNOT_PRINTER_MARK 23 PDF_ANNOT_TRAP_NET 24 PDF_ANNOT_WATERMARK 25 PDF_ANNOT_3D 26 PDF_ANNOT_PROJECTION 27 PDF_ANNOT_UNKNOWN -1 ```### 注释标志位 ```py PDF_ANNOT_IS_INVISIBLE 1 << (1-1) PDF_ANNOT_IS_HIDDEN 1 << (2-1) PDF_ANNOT_IS_PRINT 1 << (3-1) PDF_ANNOT_IS_NO_ZOOM 1 << (4-1) PDF_ANNOT_IS_NO_ROTATE 1 << (5-1) PDF_ANNOT_IS_NO_VIEW 1 << (6-1) PDF_ANNOT_IS_READ_ONLY 1 << (7-1) PDF_ANNOT_IS_LOCKED 1 << (8-1) PDF_ANNOT_IS_TOGGLE_NO_VIEW 1 << (9-1) PDF_ANNOT_IS_LOCKED_CONTENTS 1 << (10-1) ```### 注释行结束样式 ```py PDF_ANNOT_LE_NONE 0 PDF_ANNOT_LE_SQUARE 1 PDF_ANNOT_LE_CIRCLE 2 PDF_ANNOT_LE_DIAMOND 3 PDF_ANNOT_LE_OPEN_ARROW 4 PDF_ANNOT_LE_CLOSED_ARROW 5 PDF_ANNOT_LE_BUTT 6 PDF_ANNOT_LE_R_OPEN_ARROW 7 PDF_ANNOT_LE_R_CLOSED_ARROW 8 PDF_ANNOT_LE_SLASH 9 ```### 注释类型 这些标识符也涵盖了**链接**和**小部件**:PDF 规范在技术上以相同的方式处理它们,而**MuPDF**(以及 PyMuPDF)将它们视为基本上不同类型的对象。 ```py PDF_ANNOT_TEXT 0 PDF_ANNOT_LINK 1 # <=== Link object in PyMuPDF PDF_ANNOT_FREE_TEXT 2 PDF_ANNOT_LINE 3 PDF_ANNOT_SQUARE 4 PDF_ANNOT_CIRCLE 5 PDF_ANNOT_POLYGON 6 PDF_ANNOT_POLY_LINE 7 PDF_ANNOT_HIGHLIGHT 8 PDF_ANNOT_UNDERLINE 9 PDF_ANNOT_SQUIGGLY 10 PDF_ANNOT_STRIKE_OUT 11 PDF_ANNOT_REDACT 12 PDF_ANNOT_STAMP 13 PDF_ANNOT_CARET 14 PDF_ANNOT_INK 15 PDF_ANNOT_POPUP 16 PDF_ANNOT_FILE_ATTACHMENT 17 PDF_ANNOT_SOUND 18 PDF_ANNOT_MOVIE 19 PDF_ANNOT_RICH_MEDIA 20 PDF_ANNOT_WIDGET 21 # <=== Widget object in PyMuPDF PDF_ANNOT_SCREEN 22 PDF_ANNOT_PRINTER_MARK 23 PDF_ANNOT_TRAP_NET 24 PDF_ANNOT_WATERMARK 25 PDF_ANNOT_3D 26 PDF_ANNOT_PROJECTION 27 PDF_ANNOT_UNKNOWN -1
注释标志位
PDF_ANNOT_IS_INVISIBLE 1 << (1-1) PDF_ANNOT_IS_HIDDEN 1 << (2-1) PDF_ANNOT_IS_PRINT 1 << (3-1) PDF_ANNOT_IS_NO_ZOOM 1 << (4-1) PDF_ANNOT_IS_NO_ROTATE 1 << (5-1) PDF_ANNOT_IS_NO_VIEW 1 << (6-1) PDF_ANNOT_IS_READ_ONLY 1 << (7-1) PDF_ANNOT_IS_LOCKED 1 << (8-1) PDF_ANNOT_IS_TOGGLE_NO_VIEW 1 << (9-1) PDF_ANNOT_IS_LOCKED_CONTENTS 1 << (10-1)
注释线结束样式
PDF_ANNOT_LE_NONE 0 PDF_ANNOT_LE_SQUARE 1 PDF_ANNOT_LE_CIRCLE 2 PDF_ANNOT_LE_DIAMOND 3 PDF_ANNOT_LE_OPEN_ARROW 4 PDF_ANNOT_LE_CLOSED_ARROW 5 PDF_ANNOT_LE_BUTT 6 PDF_ANNOT_LE_R_OPEN_ARROW 7 PDF_ANNOT_LE_R_CLOSED_ARROW 8 PDF_ANNOT_LE_SLASH 9
小部件常量
小部件类型(field_type)
PDF_WIDGET_TYPE_UNKNOWN 0 PDF_WIDGET_TYPE_BUTTON 1 PDF_WIDGET_TYPE_CHECKBOX 2 PDF_WIDGET_TYPE_COMBOBOX 3 PDF_WIDGET_TYPE_LISTBOX 4 PDF_WIDGET_TYPE_RADIOBUTTON 5 PDF_WIDGET_TYPE_SIGNATURE 6 PDF_WIDGET_TYPE_TEXT 7
文本小部件子类型(text_format)
PDF_WIDGET_TX_FORMAT_NONE 0 PDF_WIDGET_TX_FORMAT_NUMBER 1 PDF_WIDGET_TX_FORMAT_SPECIAL 2 PDF_WIDGET_TX_FORMAT_DATE 3 PDF_WIDGET_TX_FORMAT_TIME 4
小部件标志位(field_flags)
所有字段类型共同的:
PDF_FIELD_IS_READ_ONLY 1 PDF_FIELD_IS_REQUIRED 1 << 1 PDF_FIELD_IS_NO_EXPORT 1 << 2
文本小部件:
PDF_TX_FIELD_IS_MULTILINE 1 << 12 PDF_TX_FIELD_IS_PASSWORD 1 << 13 PDF_TX_FIELD_IS_FILE_SELECT 1 << 20 PDF_TX_FIELD_IS_DO_NOT_SPELL_CHECK 1 << 22 PDF_TX_FIELD_IS_DO_NOT_SCROLL 1 << 23 PDF_TX_FIELD_IS_COMB 1 << 24 PDF_TX_FIELD_IS_RICH_TEXT 1 << 25
按钮小部件:
PDF_BTN_FIELD_IS_NO_TOGGLE_TO_OFF 1 << 14 PDF_BTN_FIELD_IS_RADIO 1 << 15 PDF_BTN_FIELD_IS_PUSHBUTTON 1 << 16 PDF_BTN_FIELD_IS_RADIOS_IN_UNISON 1 << 25
选择小部件:
PDF_CH_FIELD_IS_COMBO 1 << 17 PDF_CH_FIELD_IS_EDIT 1 << 18 PDF_CH_FIELD_IS_SORT 1 << 19 PDF_CH_FIELD_IS_MULTI_SELECT 1 << 21 PDF_CH_FIELD_IS_DO_NOT_SPELL_CHECK 1 << 22 PDF_CH_FIELD_IS_COMMIT_ON_SEL_CHANGE 1 << 26
小部件类型(field_type)
PDF_WIDGET_TYPE_UNKNOWN 0 PDF_WIDGET_TYPE_BUTTON 1 PDF_WIDGET_TYPE_CHECKBOX 2 PDF_WIDGET_TYPE_COMBOBOX 3 PDF_WIDGET_TYPE_LISTBOX 4 PDF_WIDGET_TYPE_RADIOBUTTON 5 PDF_WIDGET_TYPE_SIGNATURE 6 PDF_WIDGET_TYPE_TEXT 7
文本小部件子类型(text_format)
PDF_WIDGET_TX_FORMAT_NONE 0 PDF_WIDGET_TX_FORMAT_NUMBER 1 PDF_WIDGET_TX_FORMAT_SPECIAL 2 PDF_WIDGET_TX_FORMAT_DATE 3 PDF_WIDGET_TX_FORMAT_TIME 4
小部件标志位(field_flags)
所有字段类型共同的:
PDF_FIELD_IS_READ_ONLY 1 PDF_FIELD_IS_REQUIRED 1 << 1 PDF_FIELD_IS_NO_EXPORT 1 << 2
文本小部件:
PDF_TX_FIELD_IS_MULTILINE 1 << 12 PDF_TX_FIELD_IS_PASSWORD 1 << 13 PDF_TX_FIELD_IS_FILE_SELECT 1 << 20 PDF_TX_FIELD_IS_DO_NOT_SPELL_CHECK 1 << 22 PDF_TX_FIELD_IS_DO_NOT_SCROLL 1 << 23 PDF_TX_FIELD_IS_COMB 1 << 24 PDF_TX_FIELD_IS_RICH_TEXT 1 << 25
按钮小部件:
PDF_BTN_FIELD_IS_NO_TOGGLE_TO_OFF 1 << 14 PDF_BTN_FIELD_IS_RADIO 1 << 15 PDF_BTN_FIELD_IS_PUSHBUTTON 1 << 16 PDF_BTN_FIELD_IS_RADIOS_IN_UNISON 1 << 25
选择小部件:
PDF_CH_FIELD_IS_COMBO 1 << 17 PDF_CH_FIELD_IS_EDIT 1 << 18 PDF_CH_FIELD_IS_SORT 1 << 19 PDF_CH_FIELD_IS_MULTI_SELECT 1 << 21 PDF_CH_FIELD_IS_DO_NOT_SPELL_CHECK 1 << 22 PDF_CH_FIELD_IS_COMMIT_ON_SEL_CHANGE 1 << 26
PyMuPDF 1.24.4 中文文档(十二)(4)https://developer.aliyun.com/article/1559510