如何在Python的odfpy中获取字体类型?

1 投票
1 回答
806 浏览
提问于 2025-04-17 21:46

有没有人用过odfpy这个工具?我用这个Python包解析了一个文档,得到了段落的文本和样式名称,现在我需要知道这些段落里的文字用的是什么字体?

你们有什么想法吗?

1 个回答

0

样式是和文本分开定义的。包含文本的节点会放在带有样式属性的节点里面。举个例子,可能是这样的:

<text:p text:style-name="P5">
    <text:span text:style-name="T1">Do donkeys eat macadamia nuts? And if they don't, why don't they?
    </text:span>
</text:p>

在这个例子中,两个样式(P5或T1)可能会指定文本的字体。你需要查看文档的样式定义部分。

这段代码会创建一个字典,里面包含了文档的样式。

def get_styles(doc):
   styles= {}
   for ast in doc.automaticstyles.childNodes:

    name= ast.getAttribute('name')
    style= {}
    styles[name]= style

    for k in ast.attributes.keys():
        style[k[1]]= ast.attributes[k]
    for n in ast.childNodes:
        for k in n.attributes.keys():
            style[n.qname[1] + "/" + k[1]]= n.attributes[k]
    return styles

然后你可以查看和你关心的文本相关的样式。每个样式里面会有一个style:text-properties元素,这个元素会有一个style:font-name属性,用来指定字体。

撰写回答