You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何获取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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.29 15:12:41