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žadavek | Detail |
|---|---|
| Python | 3.9 nebo novější |
| Package | aspose-words-foss (licencováno pod MIT) |
| Input | Soubor .docx, stream nebo bytes |
pip install aspose-words-fossNačí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()neboload_bytes()před volánímto_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_paragraphspro plochou iteraci přes všechny odstavce; použijtedoc.sections, když potřebujete pracovat sekci po sekci. DocumentReaderimplementujeLdmBuilderMixin, což znamená, žeto_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ém | Příčina | Oprava |
|---|---|---|
Prázdný doc.sections po načtení | Soubor není platný DOCX | Ověř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 / Metoda | Popis: |
|---|---|
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 |
LdmBuilderMixin | Mixin, který poskytuje to_light_document() |
Document.sections | Seznam sekcí v dokumentu |
Document.all_paragraphs | Plochý seznam všech odstavců |
Document.text | Úplný textový obsah dokumentu |
Document.page_count | Počet stránek |
Document.headings(max_level) | Seznam odstavců nadpisů až do max_level |