如何使用 PyMuPDF 提取没有子集的字体名称?

问题描述 投票:0回答:1

我们正在使用 PyMuPDF Page.get_fonts() 函数从 PDF 中提取字体名称,但我们正在获取带有子集的字体名称,我们尝试在代码中使用 fitz.Tools.set_subset_fontnames() 设置,并且它适用于 get_text( 返回的字体) )但它不适用于 get_fonts()。

这是我的示例代码: 进口菲茨 fitz.TOOLS.set_subset_fontnames(False)

文件路径=“样本.pdf” pdf_document = fitz.open(文件路径) 对于 pdf_document 中的页面: extract_fonts = page.get_page_fonts(full=True) 打印(提取的字体)

这是我得到的输出:

[(140, 'ttf', 'TrueType', 'XEAAAC+Arial Bold', 'F3', 'WinAnsiEncoding', 0), (138, 'ttf', 'TrueType', 'XEAAAB+宋体', 'F2', 'WinAnsiEncoding', 0), (137, 'ttf', 'TrueType', 'XEAAAA+Arial', 'F1', 'WinAnsiEncoding', 0)]

我想要没有子集的字体名称。前任 。 “Arial Bold”而不是“XEAAAC+Arial Bold”

python pdf fonts pymupdf
1个回答
0
投票

您可以在“+”字符上拆分字体名称并选择最后一部分,它代表不带子集前缀的实际字体名称:

import fitz

fitz.TOOLS.set_subset_fontnames(False)

file_path = "sample.pdf"
pdf_document = fitz.open(file_path)

for page in pdf_document:
    extracted_fonts = page.get_fonts(full=True)
    cleaned_fonts = [(font_id, font_format, font_type, font_name.split('+')[-1], font_flags, font_encoding, font_embedded) for font_id, font_format, font_type, font_name, font_flags, font_encoding, font_embedded in extracted_fonts]
    print(cleaned_fonts)
© www.soinside.com 2019 - 2024. All rights reserved.