Работа с 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’) използва две комбинации за разделяне на отговорностите:
| Component | Role |
|---|---|
DocumentReader | Main DOCX parser — reads XML parts from the OPC package |
LdmBuilderMixin | Constructs the Light Document Model from parsed data |
ShapeParserMixin | Parses 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, за да се избегне повтарящ се товар.
Общи проблеми
| Issue | Cause | Fix |
|---|---|---|
| File not loading (exception) | Corrupt or incomplete ZIP archive | Verify the file is a valid .docx (ZIP-based OPC package) |
| Missing images in output | Image parts not embedded in the package | Check that the DOCX contains embedded (not linked) images |
| Missing content in output | Required XML parts absent from package | The file may be truncated; re-export from the source application |
Часто задавани въпроси
Какво е светлинният документ модел (LDM)?
LDM е вътрешното представяне, споделено между всички читатели. Той абстрахира специфични за формата детайли (OPC XML, OLE2 бинарни) в обща структура от секции, параграфи, пробежки, таблици и форми.
Може ли DocumentReader да обработва файлове DOCM (макро-активирани)?
Файловете с макро-позволено .docm използват същата структура на OPC. Четещият може да анализира съдържанието на документа, но макровете не се запазват или изпълняват.
Как читателят се справя с големи документи?
Четещият обработва частите на XML последователно. Използването на паметта се скалира с размера на документа. За много големи документи, помислете за отделно обработване на секции.
Снимка на API референтна информация
| Class / Method | Description |
|---|---|
DocumentReader | Reads DOCX documents and produces abstracted data structures |
LdmBuilderMixin | Mixin providing Light Document Model construction methods |
ShapeParserMixin | Mixin providing drawing/shape parsing methods |
Document | Represents a Word document (the LDM root) |
create_reader(path) | Factory that returns the correct reader for a file extension |