Vytváření lehkého modelu dokumentu pomocí DocumentReader

Vytváření lehkého modelu dokumentu pomocí DocumentReader

Vytváření lehkého modelu dokumentu s DocumentReader

DocumentReader je vstupní bod pro čtení souborů DOCX v Aspose.Words FOSS. Přijímá vstup ve formě cesty k souboru, I/O streamu nebo surových bajtů, a poté zpřístupňuje dokument jako light_document_model.Document (LDM) — strukturovaný Python objektový strom, který je snadno inspektovatelný a transformovatelný.


Požadavky

PožadavekDetail
Python3.9 nebo novější
Packageaspose-words-foss (licencováno pod MIT)
InputSoubor .docx, stream nebo bytes
pip install aspose-words-foss

Načítání z cesty k souboru

DocumentReader.load_file(filepath) načte soubor DOCX podle cesty. Poté zavolejte to_light_document() pro získání LDM reprezentace.

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

Načítání ze streamu

DocumentReader.load_stream(stream) přijímá jakýkoli objekt podobný souboru s metodou read(). To je užitečné pro data pocházející z odpovědí HTTP, archivů ZIP nebo paměťových bufferů.

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

Načítání z bajtů

DocumentReader.load_bytes(data) přijímá objekt bytes nebo bytearray. Použijte to, když je obsah DOCX již v paměti (např. načtený z databáze nebo vytvořený programově).

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

Navigace ve struktuře LDM

Po zavolání to_light_document() vrácený objekt Document odhaluje celý strom 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)

Čtení celého textu dokumentu

Document.text vrací kompletní prostý textový obsah dokumentu, spojení veškerého textu odstavců napříč všemi sekcemi:

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

Tipy a osvědčené postupy

  • Vždy zavolejte load_file(), load_stream() nebo load_bytes() před voláním to_light_document() — volání to_light_document() na nenačteném čteči může vyvolat chybu nebo vrátit prázdný dokument.
  • Použijte load_bytes(), když řídíte životní cyklus dokumentu v paměti; tím se vyhnete otevírání souborových popisovačů.
  • Použijte doc.all_paragraphs pro plochou iteraci přes všechny odstavce; použijte doc.sections, když potřebujete pracovat sekci po sekci.
  • DocumentReader implementuje LdmBuilderMixin, což znamená, že to_light_document() je dostupná jako metoda mixinu — stejné rozhraní je sdíleno s ostatními třídami čteček v knihovně.

Časté problémy

ProblémPříčinaOprava
Prázdný doc.sections po načteníSoubor není platný DOCXOvěřte, že se soubor otevře ve Wordu; zkontrolujte, že není chráněn heslem
doc.all_paragraphs je prázdnýDokument nemá tělo textu (např. jen záhlaví/patky)Zkontrolujte místo toho doc.header_paragraphs a doc.footer_paragraphs
AttributeError na to_light_document()Metoda načtení nebyla zavolána před konverzíNejprve zavolejte jedno z load_file(), load_stream() nebo load_bytes()

FAQ

Co je LDM?

Lehký model dokumentu (light_document_model.Document) je abstraktní, Python-nativní strom objektů představující Word dokument. Odděluje logiku dokumentu od binárního formátu DOCX a je navržen pro snadnou programovou manipulaci.

Mohu upravit LDM a zapsat jej zpět do DOCX?

Ano. Po úpravě doc objekt, předáte jej LdmDocxWriter.write(doc, path) pro vytvoření aktualizovaného souboru DOCX. Viz the LdmDocxWriter průvodce pro podrobnosti.

Co přidává LdmBuilderMixin?

LdmBuilderMixin poskytuje metodu to_light_document(). DocumentReader z ní dědí, takže k této metodě vždy přistupujete přes instanci čtečky.


API Reference Shrnutí

Třída / MetodaPopis:
DocumentReaderČte vstup DOCX a vytváří reprezentaci LDM
DocumentReader.load_file(filepath)Načte soubor DOCX podle cesty
DocumentReader.load_stream(stream)Načítá ze streamu podobného souboru
DocumentReader.load_bytes(data)Načítá z objektu bytes
DocumentReader.to_light_document()Vrací načtený dokument jako LDM Document
LdmBuilderMixinMixin, který poskytuje to_light_document()
Document.sectionsSeznam sekcí v dokumentu
Document.all_paragraphsPlochý seznam všech odstavců
Document.textÚplný textový obsah dokumentu
Document.page_countPočet stránek
Document.headings(max_level)Seznam odstavců nadpisů až do max_level

Viz také:

 Čeština