在python odfpy中获取字体类型?

时间:2014-03-11 09:16:15

标签: python openoffice.org odt odf odfpy

有人为odfpy做过一些事吗? 我用这个python包解析了文档,我得到了带有文本和样式名的段落,现在我需要检测这段文本中哪种类型的文本字体?

你有什么想法吗?

1 个答案:

答案 0 :(得分: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

然后,您可以检查与您关注的文本相对应的相关样式。每个样式内部都是样式:text-properties元素,该元素将具有指定字体的样式:font-name属性。