Könnyű dokumentummodell építése a DocumentReader-rel
Könnyű dokumentummodell építése a DocumentReader segítségével
DocumentReader a belépési pont a DOCX fájlok olvasásához a Aspose.Words FOSS-ban. Elfogad bemenetet fájlútként, I/O adatfolyamként vagy nyers bájtokként, majd a dokumentumot light_document_model.Document (LDM) formájában teszi elérhetővé – egy strukturált Python objektumfát, amely könnyen vizsgálható és átalakítható.
Előfeltételek
| Követelmény | Részlet |
|---|---|
| Python | 3.9 vagy újabb |
| Package | aspose-words-foss (MIT-licencelt) |
| Input | Egy .docx fájl, adatfolyam vagy bytes |
pip install aspose-words-fossBetöltés fájlútról
DocumentReader.load_file(filepath) egy DOCX fájlt olvas be útvonal alapján. Hívja meg a to_light_document() ezután a LDM ábrázolás megszerzéséhez.
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))Betöltés adatfolyamból
DocumentReader.load_stream(stream) elfogad bármilyen fájl-szerű objektumot egy read() metódussal. Ez hasznos olyan adatoknál, amelyek HTTP válaszokból, ZIP archívumokból vagy memória bufferből származnak.
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))Betöltés bájtokból
DocumentReader.load_bytes(data) elfogad egy bytes vagy bytearray objektumot. Használd ezt, amikor a DOCX tartalom már a memóriában van (pl. adatbázisból lekérve vagy programozottan előállítva).
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])Navigálás az LDM struktúrában
A to_light_document() meghívása után a visszaadott Document objektum a teljes dokumentumfát teszi elérhetővé:
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)A teljes dokumentum szövegének olvasása
Document.text visszaadja a dokumentum teljes egyszerű szöveges tartalmát, összefűzve az összes bekezdés szövegét az összes szakaszban:
reader = DocumentReader()
reader.load_file("data/report.docx")
doc = reader.to_light_document()
print(doc.text[:500])Tippek és bevált gyakorlatok
- Mindig hívd meg a(z)
load_file(),load_stream()vagyload_bytes()függvényt a(z)to_light_document()meghívása előtt — a(z)to_light_document()meghívása egy betöltetlen olvasón hibát eredményezhet vagy egy üres dokumentumot adhat vissza. - Használd a(z)
load_bytes()függvényt, ha a memóriában irányítod a dokumentum életciklusát; ezzel elkerülhető a fájlkezelők megnyitása. - Használd a(z)
doc.all_paragraphsfüggvényt az összes bekezdés sík iterálásához; használd a(z)doc.sectionsfüggvényt, ha szekciónként szeretnél dolgozni. DocumentReadermegvalósítja a(z)LdmBuilderMixininterfészt, ami azt jelenti, hogy a(z)to_light_document()mixin metódusként elérhető — ugyanaz az interfész megosztott a könyvtár más olvasó osztályaival.
Gyakori problémák
| Probléma | Oka | Javítás |
|---|---|---|
Üres doc.sections a betöltés után | A fájl nem érvényes DOCX | Ellenőrizze, hogy a fájl megnyílik-e Wordben; győződjön meg róla, hogy nincs jelszóval védve |
doc.all_paragraphs üres | A dokumentumnak nincs törzsszövege (pl. csak fejléc/lábléc) | Ellenőrizze inkább doc.header_paragraphs és doc.footer_paragraphs |
AttributeError a to_light_document() | A betöltési metódus nem lett meghívva a konverzió előtt | Hívjon meg először a load_file(), load_stream() vagy load_bytes() közül egyet |
FAQ
Mi az LDM?
A könnyű dokumentummodell (light_document_model.Document) egy absztrahált, Python-natív objektumfa, amely egy Word dokumentumot ábrázol. Szétválasztja a dokumentum logikáját a DOCX bináris formátumtól, és könnyű programozott manipulációra tervezték.
Módosíthatom az LDM-et, és visszaírhatom DOCX-be?
Igen. A módosítás után a doc objektumot, adja át neki LdmDocxWriter.write(doc, path) az frissített DOCX fájl előállításához. Lásd a LdmDocxWriter útmutató a részletekért.
Mit ad hozzá a LdmBuilderMixin?
LdmBuilderMixin biztosítja a to_light_document() metódust. A DocumentReader örökli azt, így mindig a olvasó példányon keresztül érheted el ezt a metódust.
API Reference összefoglaló
| Osztály / Metódus | Leírás |
|---|---|
DocumentReader | Beolvassa a DOCX bemenetet, és felépíti az LDM reprezentációt |
DocumentReader.load_file(filepath) | Betölti a DOCX fájlt útvonal alapján |
DocumentReader.load_stream(stream) | Betölti egy fájlhoz hasonló adatfolyamból |
DocumentReader.load_bytes(data) | Betölti egy bytes objektumból |
DocumentReader.to_light_document() | Visszaadja a betöltött dokumentumot LDM-ként Document |
LdmBuilderMixin | Mixin, amely to_light_document() biztosít |
Document.sections | A dokumentumban lévő szakaszok listája |
Document.all_paragraphs | Minden bekezdés lapos listája |
Document.text | A dokumentum teljes egyszerű szöveges tartalma |
Document.page_count | Oldalak száma |
Document.headings(max_level) | Fejléc bekezdések listája max_level -ig |