有人为odfpy做过一些事吗? 我用这个python包解析了文档,我得到了带有文本和样式名的段落,现在我需要检测这段文本中哪种类型的文本字体?
你有什么想法吗?
答案 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属性。