使用 DOCX Reader

使用 DOCX Reader

DocumentReader 类读取 Office Open XML(.docx)文件,并生成抽象的数据结构——Light Document Model(LDM)。它处理段落、表格、形状、图像和格式,使内容可用于操作或转换。


读取 DOCX 文件

最简方法是使用 Document 构造函数,它会自动为 .docx 文件选择 DocumentReader

import aspose.words_foss as aw

doc = aw.Document("input.docx")
print(f"Sections: {len(doc.sections)}")
for para in doc.all_paragraphs:
    print(para.text)

DocumentReader 架构

DocumentReader 使用两个 mixin 来划分职责:

ComponentRole
DocumentReader主要 DOCX 解析器 — 从 OPC 包中读取 XML 部分
LdmBuilderMixin从解析后的数据构建 Light Document Model
ShapeParserMixin解析嵌入文档中的绘图和形状元素

这三者在内部协同工作——你通过 Document API 与结果交互。


提取文本

在已加载的文档上使用 text 属性来提取纯文本,而无需保存到文件:

import aspose.words_foss as aw

doc = aw.Document("contract.docx")
text = doc.text
print(text[:500])

处理段落和格式化

通过 LDM 访问段落级属性:

import aspose.words_foss as aw

doc = aw.Document("styled.docx")
for para in doc.all_paragraphs:
    for run in para.runs:
        if run.font.bold:
            print(f"Bold: {run.text}")

每个 Run 都携带从 DOCX XML 中解析出的字体属性(粗体、斜体、大小、颜色)。


处理形状和图像

在解析过程中,ShapeParserMixin 提取绘图元素。形状在 LDM 中以段落内容内的 ShapeNode 对象形式出现:

import aspose.words_foss as aw

doc = aw.Document("with-images.docx")
for para in doc.all_paragraphs:
    for node in para.content_sequence:
        if hasattr(node, 'shape_type'):
            print(f"Shape: {node.shape_type}")

技巧与最佳实践

  • 对于标准工作流,请使用 Document("file.docx") —— 它会自动处理读取器选择、包验证和 LDM 构建。
  • 对于基于流的输入(网页上传),请将类文件对象传递给 Document 构造函数。
  • 对于包含表格的文件,可通过 doc.tablesdoc.all_tables 访问它们。
  • 对于批量处理,请重复使用相同的 Python 过程,以避免重复的导入开销。

常见问题

问题原因修复
文件未加载(异常)损坏或不完整的 ZIP 存档验证文件是有效的 .docx(基于 ZIP 的 OPC 包)
输出中缺少图像图像部件未嵌入到包中检查 DOCX 是否包含嵌入的(而非链接的)图像
输出中缺少内容所需的 XML 部件缺失于包中文件可能已被截断;请从源应用程序重新导出

FAQ

什么是 Light Document Model (LDM)?

LDM 是在所有读取器之间共享的内部表示。它将特定格式的细节(OPC XML、OLE2 binary)抽象为包含 sections、paragraphs、runs、tables 和 shapes 的通用结构。

可以DocumentReader处理 DOCM(宏启用)文件吗?

宏启用的.docm文件使用相同的 OPC 结构。阅读器可以解析文档内容,但宏不会被保留或执行。

阅读器如何处理大型文档?

阅读器顺序处理XML部分。内存使用量随文档大小而增长。对于非常大的文档,建议单独处理各章节。


API Reference 摘要

类 / 方法描述
DocumentReader读取 DOCX 文档并生成抽象的数据结构
LdmBuilderMixinMixin 提供轻量文档模型构建方法
ShapeParserMixin提供绘图/形状解析方法的 Mixin
Document表示一个 Word 文档(LDM 根)
create_reader(path)根据文件扩展名返回正确读取器的工厂

另请参阅

 中文