如何在Python的odfpy中获取字体类型?
有没有人用过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属性,用来指定字体。