Erstellen eines leichten Dokumentmodells mit DocumentReader

Erstellen eines leichten Dokumentmodells mit DocumentReader

Erstellen eines leichten Dokumentmodells mit DocumentReader

DocumentReader ist der Einstiegspunkt zum Lesen von DOCX-Dateien in Aspose.Words FOSS. Es akzeptiert Eingaben als Dateipfad, I/O-Stream oder Rohbytes und stellt das Dokument dann als light_document_model.Document (LDM) – einen strukturierten Python-Objektbaum – bereit, der leicht zu inspizieren und zu transformieren ist.


Voraussetzungen

AnforderungDetail
Python3.9 oder neuer
Packageaspose-words-foss (MIT-lizenziert)
InputEine .docx-Datei, ein Stream oder bytes
pip install aspose-words-foss

Laden aus einem Dateipfad

DocumentReader.load_file(filepath) liest eine DOCX-Datei über den Pfad. Rufen Sie anschließend to_light_document() auf, um die LDM-Darstellung zu erhalten.

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 aus einem Stream

DocumentReader.load_stream(stream) akzeptiert jedes dateiähnliche Objekt mit einer read()-Methode. Das ist nützlich für Daten, die aus HTTP-Antworten, ZIP-Archiven oder In-Memory-Puffern stammen.

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 aus Bytes

DocumentReader.load_bytes(data) akzeptiert ein bytes- oder bytearray-Objekt. Verwenden Sie dies, wenn der DOCX-Inhalt bereits im Speicher ist (z.B. aus einer Datenbank abgerufen oder programmgesteuert erstellt).

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

Navigieren in der LDM-Struktur

Nach dem Aufruf von to_light_document() stellt das zurückgegebene Document-Objekt den vollständigen Dokumentbaum bereit:

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)

Lesen des vollständigen Dokumenttexts

Document.text gibt den vollständigen reinen Textinhalt des Dokuments zurück und verkettet dabei den gesamten Absatztext aus allen Abschnitten:

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

Tipps und bewährte Vorgehensweisen

  • Rufen Sie immer load_file(), load_stream() oder load_bytes() auf, bevor Sie to_light_document() aufrufen — das Aufrufen von to_light_document() auf einem nicht geladenen Reader kann einen Fehler auslösen oder ein leeres Dokument zurückgeben.
  • Verwenden Sie load_bytes(), wenn Sie den Dokumentlebenszyklus im Speicher steuern; es vermeidet das Öffnen von Dateihandles.
  • Verwenden Sie doc.all_paragraphs für eine flache Iteration über alle Absätze; verwenden Sie doc.sections, wenn Sie Abschnitt für Abschnitt arbeiten müssen.
  • DocumentReader implementiert LdmBuilderMixin, was bedeutet, dass to_light_document() als Mixin-Methode verfügbar ist — dieselbe Schnittstelle wird mit anderen Reader-Klassen in der Bibliothek geteilt.

Häufige Probleme

ProblemUrsacheLösung
Leeres doc.sections nach dem LadenDatei ist kein gültiges DOCXÜberprüfen Sie, ob die Datei in Word geöffnet wird; prüfen Sie, ob sie nicht passwortgeschützt ist.
doc.all_paragraphs ist leerDokument hat keinen Fließtext (z.B. nur Kopf-/Fußzeilen)Überprüfen Sie stattdessen doc.header_paragraphs und doc.footer_paragraphs.
AttributeError auf to_light_document()Lademethode wurde nicht vor der Konvertierung aufgerufenRufen Sie zuerst eines von load_file(), load_stream() oder load_bytes() auf

FAQ

Was ist das LDM?

Das Light Document Model (light_document_model.Document) ist ein abstrahierter, Python-nativer Objektbaum, der ein Word-Dokument repräsentiert. Es trennt die Dokumentlogik vom DOCX-Binärformat und ist für eine einfache programmgesteuerte Manipulation konzipiert.

Kann ich das LDM ändern und zurück in DOCX schreiben?

Ja. Nach dem Ändern des doc Objekt, übergeben Sie es an LdmDocxWriter.write(doc, path) um eine aktualisierte DOCX-Datei zu erzeugen. Siehe die LdmDocxWriter-Handbuch für Details.

Was fügt LdmBuilderMixin hinzu?

LdmBuilderMixin stellt die to_light_document()-Methode bereit. DocumentReader erbt davon, sodass Sie diese Methode stets über die Reader-Instanz aufrufen.


API Reference Zusammenfassung

Klasse / MethodeBeschreibung
DocumentReaderLiest DOCX-Eingaben und erstellt die LDM-Darstellung
DocumentReader.load_file(filepath)Lädt eine DOCX-Datei über den Pfad
DocumentReader.load_stream(stream)Lädt aus einem dateiähnlichen Stream
DocumentReader.load_bytes(data)Lädt aus einem bytes-Objekt
DocumentReader.to_light_document()Gibt das geladene Dokument als LDM Document zurück
LdmBuilderMixinMixin, das to_light_document() bereitstellt
Document.sectionsListe der Abschnitte im Dokument
Document.all_paragraphsFlache Liste aller Absätze
Document.textVollständiger Nur-Text-Inhalt des Dokuments
Document.page_countAnzahl der Seiten
Document.headings(max_level)Liste der Überschriftsabsätze bis max_level

Siehe auch

 Deutsch