Работа с DOCX Reader

Работа с DOCX Reader

Класата DocumentReader чете файлове на Office Open XML (.docx) и произвежда абстрактна структура от данни - Light Document Model (LDM). Тя обработва параграфи, таблици, форми, изображения и форматиране, като прави съдържанието достъпно за манипулация или конвертиране.


Четене на DOCX файл

Най-простият подход е да се използва конструкторът Document, който автоматично избира ̋DicumentReader∂ за файлове ゚.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’) използва две комбинации за разделяне на отговорностите:

ComponentRole
DocumentReaderMain DOCX parser — reads XML parts from the OPC package
LdmBuilderMixinConstructs the Light Document Model from parsed data
ShapeParserMixinParses drawing and shape elements embedded in the 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, за да се избегне повтарящ се товар.

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

IssueCauseFix
File not loading (exception)Corrupt or incomplete ZIP archiveVerify the file is a valid .docx (ZIP-based OPC package)
Missing images in outputImage parts not embedded in the packageCheck that the DOCX contains embedded (not linked) images
Missing content in outputRequired XML parts absent from packageThe file may be truncated; re-export from the source application

Часто задавани въпроси

Какво е светлинният документ модел (LDM)?

LDM е вътрешното представяне, споделено между всички читатели. Той абстрахира специфични за формата детайли (OPC XML, OLE2 бинарни) в обща структура от секции, параграфи, пробежки, таблици и форми.

Може ли DocumentReader да обработва файлове DOCM (макро-активирани)?

Файловете с макро-позволено .docm използват същата структура на OPC. Четещият може да анализира съдържанието на документа, но макровете не се запазват или изпълняват.

Как читателят се справя с големи документи?

Четещият обработва частите на XML последователно. Използването на паметта се скалира с размера на документа. За много големи документи, помислете за отделно обработване на секции.


Снимка на API референтна информация

Class / MethodDescription
DocumentReaderReads DOCX documents and produces abstracted data structures
LdmBuilderMixinMixin providing Light Document Model construction methods
ShapeParserMixinMixin providing drawing/shape parsing methods
DocumentRepresents a Word document (the LDM root)
create_reader(path)Factory that returns the correct reader for a file extension
 Български