在 PyMuPDF(也称为 fitz)库中,flags
属性表示文本的格式化信息。flags
是一个整数,它包含了不同位(bits)的标志,每个位代表文本的一种属性。这些标志位可以组合在一起表示复杂的文本格式。
具体而言,flags
属性中的各个位可以解释如下:
-
0x0001
- 文本被斜体化(Italic) -
0x0002
- 文本是粗体(Bold) -
0x0004
- 文本被下划线(Underline) -
0x0008
- 文本被删除线(Strikeout) -
0x0010
- 文本是超脚注(Superscript) -
0x0020
- 文本是下脚注(Subscript) -
0x0040
- 文本是小型大写字母(Small Caps) -
0x0080
- 文本是影子(Shadow) -
0x0100
- 文本是轮廓(Outline) -
0x0200
- 文本是浮雕(Embossed) -
0x0400
- 文本是凹陷(Engraved)
这些标志位通过按位操作可以组合在一起。例如,如果文本既是粗体又是斜体,则 flags
值将是 0x0002 | 0x0001 = 0x0003
。
要读取并解释 flags
属性,可以使用按位与操作来检查特定标志是否存在。例如:
import fitz
doc = fitz.open("example.pdf")
page = doc.load_page(0)
for block in page.get_text("dict")["blocks"]:
for line in block["lines"]:
for span in line["spans"]:
flags = span["flags"]
is_bold = flags & 0x0002 != 0
is_italic = flags & 0x0001 != 0
print(f"Text: {span['text']}, Bold: {is_bold}, Italic: {is_italic}")
这段代码会检查每个 span
的 flags
属性,并打印出文本是否是粗体或斜体。通过这种方式,你可以解码并使用 flags
属性来获取文本的格式化信息。