在 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 fitzdoc = 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 != 0is_italic = flags & 0x0001 != 0print(f"Text: {span['text']}, Bold: {is_bold}, Italic: {is_italic}")
这段代码会检查每个 span 的 flags 属性,并打印出文本是否是粗体或斜体。通过这种方式,你可以解码并使用 flags 属性来获取文本的格式化信息。