如何获取Python-Docx中空文档的默认字体大小?
获取空Word文档的默认字体大小
当Word文档为空且Normal样式未指定字号时,doc.styles['Normal'].font.size返回None是因为python-docx的API只暴露了样式中显式设置的属性,而默认字体大小确实存储在文档的XML内容里——具体位置是文档压缩包中word/document.xml的<w:docDefaults>节点下,对应西文和中文默认字号的标签分别是<w:sz>和<w:szCs>(Word中字号以半磅为单位,比如11磅对应值为22)。
下面是直接解析XML获取默认字号的代码示例(依赖lxml库):
from zipfile import ZipFile from lxml import etree def get_default_font_size(docx_path): ns = {"w": "http://schemas.openxmlformats.org/wordprocessingml/2006/main"} with ZipFile(docx_path, 'r') as zip_ref: with zip_ref.open('word/document.xml') as xml_file: tree = etree.fromstring(xml_file.read()) # 定位默认格式节点 doc_defaults = tree.find('.//w:docDefaults', ns) if not doc_defaults: return None rpr_default = doc_defaults.find('.//w:rPrDefault/w:rPr', ns) if not rpr_default: return None # 提取西文默认字号,需中文则替换为.find('.//w:szCs', ns) sz_elem = rpr_default.find('.//w:sz', ns) if sz_elem is not None: # 转换为实际磅值(Word以半磅为单位存储) return int(sz_elem.get('w:val')) / 2 return None # 调用示例 default_size = get_default_font_size("empty_doc.docx") print(f"默认字体大小:{default_size}磅")
这个方法无需创建临时段落,直接读取文档底层的XML配置,是比临时段落更可靠的解决方案。
内容的提问来源于stack exchange,提问作者buhtz
相关产品推荐
相关产品推荐

