PyMuPDF 1.24.4 中文文档(十二)(3)

简介: PyMuPDF 1.24.4 中文文档(十二)

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

相关文章
|
前端开发
uni-app中使用 async + await 实现异步请求同步化
uni-app中使用 async + await 实现异步请求同步化
3909 0
uni-app中使用 async + await 实现异步请求同步化
|
NoSQL Linux Redis
Docker安装Redis并配置文件启动
之前已经写过Redis分别在Linux、Windows上安装部署,及其集群环境搭建。这次写一篇Docker容器部署Redis的教程,配置文件方式启动服务。
Docker安装Redis并配置文件启动
|
XML 存储 JSON
PyMuPDF 1.24.4 中文文档(十二)(4)
PyMuPDF 1.24.4 中文文档(十二)
154 0
|
11月前
|
机器学习/深度学习 人工智能 物联网
微软Phi-4系列开源:多模态与文本处理的创新突破
微软近期推出 Phi-4-multimodal 和 Phi-4-mini,这些模型是 Microsoft Phi 系列小型语言模型 (SLM) 中的最新模型。Phi-4-multimodal 能够同时处理语音、视觉和文本,为创建创新且具有上下文感知能力的应用程序开辟了新的可能性。另一方面,Phi-4-mini 在基于文本的任务方面表现出色,以紧凑的形式提供高精度和可扩展性。
706 4
|
存储 Java 开发工具
在Eclipse配置安装Android详细教程(新手)
在Eclipse配置安装Android详细教程(新手)
591 1
|
存储 人工智能 Cloud Native
“爆款”批量生成,如何实现一键创作 AI 有声绘本?
有声读物作为备受欢迎的内容形式之一,已在教育、影视、文化及娱乐等多个领域广泛应用。本方案通过云原生应用开发平台 CAP、函数计算 FC 和百炼模型服务,实现了有声绘本读物的自动化创作,解决了传统制作中步骤繁琐、周期长和高技术门槛的问题,显著提高了创作效率。
528 19
|
数据可视化 机器人 API
Openai的API相关全部概论汇总(通用版)
本文是2024年Openai API的全面概论汇总,涵盖了Openai平台概览、相关项目推荐(如ChatGPT-Next-Web和chatgpt-on-wechat)、账户分级制度与速率限制、费用详情以及如何快速开始使用Openai的API,为有兴趣使用Openai服务的开发者提供了详细的入门指南和资源链接。
Openai的API相关全部概论汇总(通用版)
|
存储 API 数据库
如何使用 ef core 的 code first(fluent api)模式实现自定义类型转换器?
本文介绍了如何在 EF Core 的 Code First 模式下使用自定义类型转换器实现 JsonDocument 和 DateTime 类型到 SQLite 数据库的正确映射。通过自定义 ValueConverter,实现了数据类型的转换,并展示了完整的项目结构和代码实现,包括实体类定义、DbContext 配置、Repositories 仓储模式及数据库应用迁移(Migrations)操作。
338 6
如何使用 ef core 的 code first(fluent api)模式实现自定义类型转换器?
|
开发框架 Oracle Java
【编程基础知识】《Java 世界探秘:JRE、JDK 与 JDK 版本全解析》
JRE(Java Runtime Environment)是运行Java程序所需的环境,包含JVM和Java核心类库,适合普通用户使用。JDK(Java Development Kit)则是Java开发工具包,不仅包含JRE,还提供了编译器、调试器等开发工具,适用于开发者。两者的主要区别在于JDK用于开发,而JRE仅用于运行Java程序。JDK各版本不断引入新特性,如Java 8中的Lambda表达式和默认方法等。环境配置方面,Windows和Linux系统都有详细的步骤,确保Java程序能够顺利编译和运行。
590 1
|
存储 XML 编解码
PyMuPDF 1.24.4 中文文档(八)(3)
PyMuPDF 1.24.4 中文文档(八)
843 1