使用 DOC 阅读器

使用 DOC 阅读器

Aspose.Words FOSS for Python 包含一个专用的读取器,用于旧版 Word 97-2003 .doc 文件。DocFileReader 类解析 OLE2 二进制格式,并生成可操作或转换为其他格式的轻量文档模型(LDM)。


加载 DOC 文件

使用 DocFileReader 从磁盘打开一个 .doc 文件并将其转换为 Document:

import aspose.words_foss as aw

doc = aw.Document("report.doc")
print(f"Paragraphs: {len(doc.all_paragraphs)}")

Document 构造函数委托给 create_reader(),后者会根据 .doc 扩展名自动选择 DocFileReader。


直接使用 DocFileReaderCore

对于更低层次的控制,实例化 DocFileReaderCore 并调用其加载方法:

from aspose.words_foss.doc_reader.doc_file_reader_core import DocFileReaderCore

reader = DocFileReaderCore()
reader.load_file("legacy.doc")

DocFileReaderCore 提供三种输入方式:

方法输入类型使用场景
load_file(filepath)文件路径字符串从磁盘读取
load_stream(stream)类文件对象从上传或网络流读取
load_bytes(data)bytes从内存缓冲区读取

构建 Light Document Model

加载后,对 DocFileReader 调用 to_light_document() 以生成 LDM Document:

from aspose.words_foss.doc_reader.doc_file_reader import DocFileReader

reader = DocFileReader()
reader.load_file("input.doc")
ldm_doc = reader.to_light_document()

LDM 是在所有读取器(DocFileReader、DocumentReader、TextFileReader)之间共享的内部表示。拥有 LDM 文档后,您可以将其保存为任何受支持的输出格式。


DocumentFormatReader 协议

所有读取器都实现了 DocumentFormatReader 协议,该协议定义了通用接口:load_file()、load_stream() 和 load_bytes()。create_reader() 工厂函数根据文件扩展名返回相应的读取器:

from aspose.words_foss.reader_factory import create_reader

reader = create_reader("data.doc")  # returns DocFileReader
reader.load_file("data.doc")

提示与最佳实践

  • 在大多数工作流中使用高级 Document("file.doc") 构造函数——它会自动处理读取器的选择。
  • 仅在需要直接访问二进制解析层时才使用 DocFileReaderCore。
  • 对于以 bytes 接收的文件(例如来自 HTTP 上传),建议使用 load_bytes() 以避免写入临时文件。
  • DOC 阅读器在文本、段落和基本格式方面提供与 DOCX 阅读器相同的往返保真度。

常见问题

问题原因修复
load_file() 引发 FileNotFoundError文件路径不正确在调用之前验证路径是否存在
加载后出现乱码文件不是有效的 OLE2 二进制文件确认文件确实是 .doc 格式,而不是被重命名的 .docx
输出中缺少格式某些高级 DOC 功能尚未支持检查 limitations.md 是否有不受支持的功能

FAQ

DocFileReader 与 DocFileReaderCore 有何区别?

DocFileReaderCore 负责 OLE2 格式的低层二进制解析。DocFileReader 通过添加 to_light_document() 方法进行扩展,该方法生成适用于转换的完整 LDM Document。

我可以从流中加载 DOC 文件吗?

是的。使用 DocFileReaderCore.load_stream(stream) 或传入类似文件的对象。这对于文件以流形式上传的 Web 应用程序非常有用。

DOC 阅读器是否支持密码保护的文件?

目前不支持密码保护的 .doc 文件。如果文件被加密,阅读器会抛出异常。


API Reference 摘要

类 / 方法描述
DocFileReader完整的 DOC 阅读器,具备 LDM 构建功能
DocFileReader.to_light_document()将解析后的 DOC 数据转换为 LDM 文档
DocFileReaderCoreWord 97-2003(.doc)二进制文件的核心阅读器
DocFileReaderCore.load_file(filepath)从路径加载 DOC 文件
DocFileReaderCore.load_stream(stream)从流中加载 DOC 文件
DocFileReaderCore.load_bytes(data)从字节缓冲区加载 DOC 文件
DocumentFormatReader所有文档读取器的协议接口
create_reader(path)根据文件扩展名返回正确读取器的工厂

另请参阅

 中文