Een licht documentmodel bouwen met DocumentReader

Een licht documentmodel bouwen met DocumentReader

Een Light Document Model bouwen met DocumentReader

DocumentReader is het toegangspunt voor het lezen van DOCX-bestanden in Aspose.Words FOSS. Het accepteert invoer als een bestandspad, een I/O-stream of ruwe bytes, en stelt vervolgens het document beschikbaar als een light_document_model.Document (LDM) — een gestructureerde Python objectboom die gemakkelijk te inspecteren en te transformeren is.


Vereisten

VereisteDetail
Python3.9 of later
Packageaspose-words-foss (MIT-licentie)
InputEen .docx bestand, stream, of bytes
pip install aspose-words-foss

Laden vanaf een bestandspad

DocumentReader.load_file(filepath) leest een DOCX-bestand via een pad. Roep daarna to_light_document() aan om de LDM-representatie te verkrijgen.

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

Laden vanaf een stream

DocumentReader.load_stream(stream) accepteert elk bestand-achtig object met een read()-methode. Dit is handig voor gegevens afkomstig van HTTP-reacties, ZIP-archieven, of geheugenbuffers.

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

Laden vanuit Bytes

DocumentReader.load_bytes(data) accepteert een bytes of bytearray object. Gebruik dit wanneer de DOCX-inhoud al in het geheugen staat (bijv. opgehaald uit een database of programmatisch opgebouwd).

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

Navigeren door de LDM-structuur

Na het aanroepen van to_light_document() onthult het geretourneerde Document-object de volledige documentboom:

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)

Lezen van volledige documenttekst

Document.text retourneert de volledige platte-tekstinhoud van het document, waarbij alle alinea-tekst uit alle secties wordt aaneengeschakeld:

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

Tips en best practices

  • Roep altijd load_file(), load_stream() of load_bytes() aan voordat je to_light_document() aanroept — het aanroepen van to_light_document() op een niet geladen lezer kan een fout veroorzaken of een leeg document retourneren.
  • Gebruik load_bytes() wanneer je de levenscyclus van het document in het geheugen beheert; het voorkomt het openen van bestands-handles.
  • Gebruik doc.all_paragraphs voor een platte iteratie over alle alinea’s; gebruik doc.sections wanneer je sectie-voor-sectie moet werken.
  • DocumentReader implementeert LdmBuilderMixin, wat betekent dat to_light_document() beschikbaar is als een mixin-methode — dezelfde interface wordt gedeeld met andere lezerklassen in de bibliotheek.

Veelvoorkomende problemen

ProbleemOorzaakOplossing
Leeg doc.sections na ladenBestand is geen geldig DOCXControleer of het bestand opent in Word; controleer of het niet met een wachtwoord beveiligd is
doc.all_paragraphs is leegDocument bevat geen hoofdtekst (bijv. alleen kopteksten/voetteksten)Controleer in plaats daarvan doc.header_paragraphs en doc.footer_paragraphs
AttributeError op to_light_document()Load-methode niet aangeroepen vóór conversieRoep eerst een van load_file(), load_stream() of load_bytes() aan

FAQ

Wat is de LDM?

Het light document model (light_document_model.Document) is een geabstraheerde, Python-native objectboom die een Word-document vertegenwoordigt. Het scheidt de documentlogica van het binaire DOCX-formaat en is ontworpen voor eenvoudige programmatische manipulatie.

Kan ik de LDM wijzigen en terugschrijven naar DOCX?

Ja. Na het aanpassen van de doc object, geef het door aan LdmDocxWriter.write(doc, path) om een bijgewerkt DOCX-bestand te maken. Zie de LdmDocxWriter-gids voor details.

Wat voegt LdmBuilderMixin toe?

LdmBuilderMixin levert de to_light_document() methode. DocumentReader erft ervan, zodat je altijd deze methode via de reader-instantie benadert.


API Reference Samenvatting

Klasse / MethodeBeschrijving
DocumentReaderLeest DOCX-invoer en bouwt de LDM-representatie
DocumentReader.load_file(filepath)Laadt een DOCX-bestand via een pad
DocumentReader.load_stream(stream)Laadt van een bestand-achtige stream
DocumentReader.load_bytes(data)Laadt van een bytes-object
DocumentReader.to_light_document()Retourneert het geladen document als een LDM Document
LdmBuilderMixinMixin die to_light_document() biedt
Document.sectionsLijst van secties in het document
Document.all_paragraphsPlatte lijst van alle alinea’s
Document.textVolledige platte-tekstinhoud van het document
Document.page_countAantal pagina’s
Document.headings(max_level)Lijst van kopparagrafen tot max_level

Zie ook

 Nederlands