Работа с DOCX Reader

Работа с DOCX Reader

В связи с этим DocumentReader класс Office Open XML (.docx) файлов и производит абстрактную структуру данных модель легкого документа (LDM). Она обрабатывает абзацы, таблицы , формы, изображения и форматы, делая содержимое доступным для манипуляции или конвертации.


Читать файл DOCX

Самый простой подход - использовать Document конструктор, который автоматически выбирает: DocumentReader для: .docx файлы:

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Главный анализатор DOCX читает части XML из пакета OPC.
LdmBuilderMixinСоздает модель Light Document из проанализированных данных
ShapeParserMixinПроверка элементов рисунков и форм, встроенных в документ.

Все три работают вместе внутри вы взаимодействуете с результатом через систему. Document API.


Вывод текста

Использование: get_text() на загруженном документе для извлечения простого текста без сохранения в файл:

import aspose.words_foss as aw

doc = aw.Document("contract.docx")
text = doc.get_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.tables или в другом случае: doc.all_tables.
  • Для сборочной обработки используйте тот же процесс Python, чтобы избежать повторных накладных расходов по импорту.

Общие проблемы

ВыпускПричина .Устранить
Не загружается файл (исключение)Недостаточный архив ZIP-файловПроверка файла является действительным . .docx (ОПК на основе ZIP)
Недостающие изображения в выходеЧасти изображения, не встроенные в упаковку.Проверьте, что DOCX содержит встроенные (не связанные) изображения.
Недостаточное содержание в выходеНеобходимые части XML, отсутствующие в пакетеФайл может быть отрезан; реэкспорт из исходного приложения.

FAQ

Что такое модель светового документа (LDM)?

LDM - это внутреннее представление, которое используется всеми читателями. Он абстрагирует конкретные детали формата (OPC XML, OLE2 бинарный) в общую структуру разделов, абзацев, пробегов, таблиц и фигур.

Может ли DocumentReader обрабатывать файлы DOCM (с поддержкой макро)?

Макро-свободный .docm файлы используют ту же структуру OPC. Читатель может проанализировать содержимое документа, но макросы не хранятся или исполняются.

Как читатель обрабатывает большие документы?

Читатель обрабатывает части XML последовательно. Использование памяти меняется с размерами документов. Для очень больших документов рассматривайте обработку разделов по отдельности.


Справочное резюме API

Класс / методОписание:
DocumentReaderЧитает документы DOCX и создаёт абстрактные структуры данных.
LdmBuilderMixinМетоды построения миксины для легких документов
ShapeParserMixinСмесь, обеспечивающая методы рисования/разборки формы.
DocumentПредставляет документ Word (корень LDM)
create_reader(path)Фабрика, которая возвращает правильный читатель для расширения файла.
 Русский