Budowanie lekkiego modelu dokumentu przy użyciu DocumentReader

Budowanie lekkiego modelu dokumentu przy użyciu DocumentReader

Tworzenie lekkiego modelu dokumentu przy użyciu DocumentReader

DocumentReader jest punktem wejścia do odczytu plików DOCX w Aspose.Words FOSS. Akceptuje wejście jako ścieżkę pliku, strumień I/O lub surowe bajty, a następnie udostępnia dokument jako light_document_model.Document (LDM) — strukturalne drzewo obiektów Python, które jest łatwe do przeglądania i transformacji.


Wymagania wstępne

WymaganieSzczegół
Python3.9 lub nowszy
Packageaspose-words-foss (na licencji MIT)
InputPlik .docx, strumień lub bytes
pip install aspose-words-foss

Ładowanie ze ścieżki pliku

DocumentReader.load_file(filepath) odczytuje plik DOCX ze ścieżki. Następnie wywołaj to_light_document(), aby uzyskać reprezentację 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))

Ładowanie ze strumienia

DocumentReader.load_stream(stream) akceptuje dowolny obiekt podobny do pliku z metodą read(). Jest to przydatne dla danych pochodzących z odpowiedzi HTTP, archiwów ZIP lub buforów w pamięci.

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))

Ładowanie z bajtów

DocumentReader.load_bytes(data) akceptuje obiekt bytes lub bytearray. Użyj tego, gdy zawartość DOCX jest już w pamięci (np. pobrana z bazy danych lub utworzona programowo).

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])

Nawigacja po strukturze LDM

Po wywołaniu to_light_document(), zwrócony obiekt Document udostępnia pełne drzewo dokumentu:

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)

Odczyt pełnego tekstu dokumentu

Document.text zwraca kompletną zawartość dokumentu w formacie plain-text, łącząc tekst wszystkich akapitów we wszystkich sekcjach:

reader = DocumentReader()
reader.load_file("data/report.docx")
doc = reader.to_light_document()
print(doc.text[:500])

Wskazówki i najlepsze praktyki

  • Zawsze wywołuj load_file(), load_stream() lub load_bytes() przed wywołaniem to_light_document() — wywołanie to_light_document() na niezaładowanym czytniku może spowodować błąd lub zwrócić pusty dokument.
  • Użyj load_bytes(), gdy kontrolujesz cykl życia dokumentu w pamięci; unika to otwierania uchwytów plików.
  • Użyj doc.all_paragraphs do płaskiej iteracji po wszystkich akapitach; użyj doc.sections, gdy potrzebujesz pracować sekcja po sekcji.
  • DocumentReader implementuje LdmBuilderMixin, co oznacza, że to_light_document() jest dostępny jako metoda mixin — ten sam interfejs jest współdzielony z innymi klasami czytnika w bibliotece.

Typowe problemy

ProblemPrzyczynaNaprawa
Pusty doc.sections po załadowaniuPlik nie jest prawidłowym DOCXSprawdź, czy plik otwiera się w Wordzie; upewnij się, że nie jest chroniony hasłem
doc.all_paragraphs jest pustyDokument nie zawiera tekstu głównego (np. tylko nagłówki/stopki)Sprawdź doc.header_paragraphs i doc.footer_paragraphs zamiast tego
AttributeError na to_light_document()Metoda Load nie została wywołana przed konwersjąNajpierw wywołaj jedną z load_file(), load_stream() lub load_bytes() first

FAQ

Czym jest LDM?

Model lekki dokumentu (light_document_model.Document) jest abstrakcyjnym, Python-natywnym drzewem obiektów reprezentującym dokument Word. Oddziela on logikę dokumentu od binarnego formatu DOCX i jest zaprojektowany do łatwej programistycznej manipulacji.

Czy mogę zmodyfikować LDM i zapisać go ponownie jako DOCX?

Tak. Po zmodyfikowaniu the doc obiekt, przekaż go do LdmDocxWriter.write(doc, path) aby utworzyć zaktualizowany plik DOCX. Zobacz the przewodnik LdmDocxWriter po szczegóły.

Co dodaje LdmBuilderMixin?

LdmBuilderMixin udostępnia metodę to_light_document(). DocumentReader dziedziczy po niej, więc zawsze uzyskujesz dostęp do tej metody za pośrednictwem instancji czytnika.


Podsumowanie API Reference

Klasa / MetodaOpis
DocumentReaderOdczytuje wejście DOCX i tworzy reprezentację LDM
DocumentReader.load_file(filepath)Ładuje plik DOCX według ścieżki
DocumentReader.load_stream(stream)Ładuje z strumienia podobnego do pliku
DocumentReader.load_bytes(data)Ładuje z obiektu bytes
DocumentReader.to_light_document()Zwraca załadowany dokument jako LDM Document
LdmBuilderMixinMixin, który zapewnia to_light_document()
Document.sectionsLista sekcji w dokumencie
Document.all_paragraphsPłaska lista wszystkich akapitów
Document.textPełna zawartość tekstowa dokumentu
Document.page_countLiczba stron
Document.headings(max_level)Lista akapitów nagłówków do max_level

Zobacz także

 Polski