Работа с 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) | Фабрика, которая возвращает правильный читатель для расширения файла. |