1

有人对 odfpy 有经验吗?我用这个python包解析了文档,得到了带有他的文本和样式名的段落,现在我需要检测这个段落文本中的文本字体类型?

你有什么想法 ?

4

1 回答 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 属性来指定字体。

于 2017-09-06T08:11:55.610 回答