Създаване на лесен модел за документ с DocumentReader
Създаване на лесен модел за документ с DocumentReader
DocumentReader е входната точка за четене на файлове DOCX в Aspose.Words FOSS. Приема вход като път за файл, поток на В/В или сурови байтове и след това излага документ като light_document_model.Document (LDM) структуриран Python обект дърво, което е лесно за проверка и трансформация.
Предварителни условия
| Изискване | Детайли |
|---|---|
| Python | 3.9 or later |
| Пакетът | aspose-words-foss (лицензиран от MIT) |
| Вход на данни | A. Също така: .docx файл, поток или bytes |
pip install aspose-words-fossЗареждане от пътека за файлове
DocumentReader.load_file(filepath) чете DOCX файл по път. to_light_document() след това да получат представителство на LDM.
from aspose.words_foss import DocumentReader
reader = DocumentReader()
reader.load_file("data/report.docx")
doc = reader.to_light_document()
print("Page count:", doc.page_count)
print("Sections:", len(doc.sections))Зареждане от поток
DocumentReader.load_stream(stream) приема всеки файлов обект с read() Методът е полезен за данни, идващи от HTTP отговори, ZIP архиви или буфери в паметта.
from aspose.words_foss import DocumentReader
reader = DocumentReader()
with open("data/report.docx", "rb") as fh:
reader.load_stream(fh)
doc = reader.to_light_document()
print("Paragraphs:", len(doc.all_paragraphs))Зареждане от байтове
DocumentReader.load_bytes(data) приема да bytes или с други: bytearray Използване на обект. това, когато съдържанието на DOCX вече е в паметта (напр. взето от база данни) и се използва за изтегляне на файловете; или програмирано).
from aspose.words_foss import DocumentReader
with open("data/report.docx", "rb") as fh:
data = fh.read()
reader = DocumentReader()
reader.load_bytes(data)
doc = reader.to_light_document()
print("Text preview:", doc.text[:200])Навигация по структурата на LDM
След като се обади. to_light_document(), връщане на Document Общността е изложена на общото. пълнодокументално дърво:
from aspose.words_foss import DocumentReader
reader = DocumentReader()
reader.load_file("data/report.docx")
doc = reader.to_light_document()
# Sections
for section in doc.sections:
print("Section paragraphs:", len(section.paragraphs))
# All paragraphs (flat list across all sections)
for para in doc.all_paragraphs:
if para.text.strip():
print(" -", para.text[:80])
# Headings
for heading in doc.headings(max_level=2):
print("H:", heading.text)Четене на пълен текст на документа
Document.text връща цялото съдържание на документа в обикновен текст, съвкупност на текста в параграфите във всички раздели:
reader = DocumentReader()
reader.load_file("data/report.docx")
doc = reader.to_light_document()
print(doc.text[:500])Съвети и най-добри практики
- Винаги звъни.
load_file(),load_stream(), илиload_bytes()преди да се обадиш.to_light_document()обажданеto_light_document()на разтоварен читател може да повдигне грешка или да върне празен документ. - Използване на:
load_bytes()Когато контролирате жизнения цикъл на документа в паметта; това избягва отваряне на файлови ръкавици. - Използване на:
doc.all_paragraphsза плоско итерация върху всички параграфи; използване наdoc.sectionsкогато трябва да работиш секция по секции. DocumentReaderинструменти за изпълнение на задачиLdmBuilderMixin, което означава, чеto_light_document()е наличен като миксинг метод същият интерфейс се споделя с други читатели. Уроци в библиотеката.
Общи проблеми
| Издание | Причина за това | Ремонтиране |
|---|---|---|
Пусто е. doc.sections след натоварване | Файлът не е валиден DOCX | Проверете дали файлът се отваря в Word; проверете, че не е защитен с парола. |
doc.all_paragraphs е празен. | Документът няма текст в тялото (напр. само заглавия/подложки) | Проверка. doc.header_paragraphs и в) doc.footer_paragraphs вместо това. |
AttributeError на 1 януари to_light_document() | Метод на товарене не е призован преди преобразуване. | Обади се на някой от… load_file(), load_stream(), или load_bytes() Първо. |
FAQ
Какво е LDM?
Моделът на лекия документ (light_document_model.Document) е абстрактна, Python-native обектно дърво, представляващо Word документ. Отделя логиката на документа от двоичния формат DOCX и е предназначен за лесна програмна манипулация.
Мога ли да модифицирам LDM и да го напиша обратно в DOCX?
Да, след като променим… doc Предмет, предай го на… LdmDocxWriter.write(doc, path) да се създаде актуализиран DOCX файл. Вижте Ръководство за LdmDocxWriter за подробности.
Какво прави това? LdmBuilderMixin Да добавяме?
LdmBuilderMixin предвижда: to_light_document() метод. DocumentReader наследява от него, така че винаги ще имате достъп до този метод чрез инстанцията на читателя.
Снимка на API референтна информация
| Клас / метод | Описание на състоянието |
|---|---|
DocumentReader | Чете DOCX вход и изгражда LDM представяне |
DocumentReader.load_file(filepath) | Зарежда DOCX файл по пътека |
DocumentReader.load_stream(stream) | Зареждане от поток, подобен на файл |
DocumentReader.load_bytes(data) | Загрузки от bytes обект |
DocumentReader.to_light_document() | Връща заредения документ като LDM Document |
LdmBuilderMixin | Миксина, която осигурява: to_light_document() |
Document.sections | Списък на раздели в документа |
Document.all_paragraphs | Плоско изброяване на всички параграфи |
Document.text | Пълното съдържание на документа в обикновен текст |
Document.page_count | Брой страници |
Document.headings(max_level) | Списък на заглавия до max_level |