DOCX-Dateien mit LdmDocxWriter schreiben

DOCX-Dateien mit LdmDocxWriter schreiben

DOCX-Dateien schreiben mit LdmDocxWriter

LdmDocxWriter konvertiert ein light_document_model.Document (LDM)-Objekt in eine DOCX-Datei. Es ist das Schreib-Pendant zu DocumentReader, das DOCX-Dateien liest und sie als LDM-Baum bereitstellt. Zusammen bilden sie eine Round-Trip-Pipeline: DocumentReader in, LdmDocxWriter out.


Voraussetzungen

AnforderungDetail
Python3.9 oder neuer
Packageaspose-words-foss (MIT-lizenziert)
InputEine light_document_model.Document Instanz
pip install aspose-words-foss

In einen Dateipfad schreiben

LdmDocxWriter.write(doc, output_path) serialisiert das LDM-Dokument in eine DOCX-Datei am angegebenen Pfad. Wenn das übergeordnete Verzeichnis des Pfads nicht existiert, löst der Aufruf FileNotFoundError aus.

from aspose.words_foss import DocumentReader, LdmDocxWriter

# Load a DOCX and obtain its LDM representation
reader = DocumentReader()
reader.load_file("input/original.docx")
ldm_doc = reader.to_light_document()

# Write the LDM document back to a DOCX file
writer = LdmDocxWriter()
writer.write(ldm_doc, "output/result.docx")
print("Written to output/result.docx")

In Bytes schreiben (Ausgabe im Speicher)

LdmDocxWriter.write_to_bytes(doc) gibt den DOCX-Inhalt als bytes-Objekt zurück. Verwenden Sie dies, wenn Sie die Datei über ein Netzwerk senden, in einer Datenbank speichern oder das Schreiben auf das Dateisystem vollständig vermeiden müssen.

from aspose.words_foss import DocumentReader, LdmDocxWriter

reader = DocumentReader()
reader.load_file("input/report.docx")
ldm_doc = reader.to_light_document()

writer = LdmDocxWriter()
docx_bytes = writer.write_to_bytes(ldm_doc)
print(f"DOCX bytes: {len(docx_bytes)}")

# Save manually if desired
with open("output/report_copy.docx", "wb") as f:
    f.write(docx_bytes)

Round-Trip-Muster

Der häufigste Anwendungsfall ist ein Lese-Änder-Schreibe-Durchlauf:

from aspose.words_foss import DocumentReader, LdmDocxWriter

reader = DocumentReader()
reader.load_file("input/template.docx")
ldm_doc = reader.to_light_document()

# Inspect or modify the LDM here
print("Sections:", len(ldm_doc.sections))
print("Paragraphs:", len(ldm_doc.all_paragraphs))

writer = LdmDocxWriter()
writer.write(ldm_doc, "output/modified.docx")

Verlustbehaftete Schreibwarnungen

Wenn LdmDocxWriter ein LDM-Konstrukt im DOCX-Format nicht treu wiedergeben kann, erzeugt es ein DocxWriterLossyWarning. Sie können diese mit dem warnings-Modul von Python erfassen, um zu prüfen, was verworfen wurde:

import warnings
from aspose.words_foss import DocumentReader, LdmDocxWriter, DocxWriterLossyWarning

reader = DocumentReader()
reader.load_file("input/complex.docx")
ldm_doc = reader.to_light_document()

writer = LdmDocxWriter()
with warnings.catch_warnings(record=True) as w:
    warnings.simplefilter("always", DocxWriterLossyWarning)
    writer.write(ldm_doc, "output/complex_out.docx")

for warning in w:
    print("Lossy:", warning.message)

Tipps und bewährte Vorgehensweisen

  • Rufen Sie stets DocumentReader.to_light_document() auf, bevor Sie das Dokument an LdmDocxWriter übergeben – der Writer erwartet ein LDM Document, nicht ein rohes DocumentReader.
  • Verwenden Sie write_to_bytes() in Web-Handlern, um die Verwaltung temporärer Dateien zu vermeiden.
  • Überprüfen Sie DocxWriterLossyWarning in Tests, um Round-Trip-Regressionen beim Upgrade der Bibliothek zu erkennen.
  • LdmDocxWriter.options ist für Konfiguration auf Schreiberebene verfügbar; prüfen Sie das Objekt nach der Instanziierung, um die verfügbaren Einstellungen zu sehen.

Häufige Probleme

ProblemUrsacheBehebung
FileNotFoundError auf write()Übergeordnetes Verzeichnis existiert nichtErstelle das Ausgabeverzeichnis mit Path.mkdir(parents=True, exist_ok=True), bevor write() aufgerufen wird
DocxWriterLossyWarning ausgegebenLDM-Konstrukt nicht in DOCX darstellbarÜberprüfen Sie die Warnmeldung; akzeptieren Sie den Verlust oder passen Sie das LDM vor dem Schreiben an
Leere DOCX-AusgabeLDM-Dokument hat keine Abschnitte oder AbsätzeÜberprüfen Sie, dass ldm_doc.sections und ldm_doc.all_paragraphs nach dem Laden nicht leer sind

FAQ

Was ist das LDM (light_document_model)?

Das LDM ist die abstrakte, Python-native Darstellung eines Word-Dokuments von Aspose.Words FOSS. Es entkoppelt die Dokumentlogik vom binären DOCX-Format und erleichtert das programmgesteuerte Inspektieren und Manipulieren der Dokumentstruktur.

Kann ich statt DOCX in PDF schreiben?

Ja — verwenden Sie LdmPdfWriter.write(doc, output_path) aus demselben Paket für die PDF-Ausgabe oder LdmMarkdownWriter.write(doc, output_path) für Markdown.

Benötigt write_to_bytes() einen Ausgabepfad?

Nein. write_to_bytes(doc) verarbeitet nur das LDM-Dokument und gibt ein bytes-Objekt zurück, ohne Dateisysteminteraktion.


API Reference Zusammenfassung

Klasse / MethodeBeschreibung
LdmDocxWriterKonvertiert ein LDM Document in eine DOCX-Datei
LdmDocxWriter.write(doc, output_path)Schreibt die DOCX an den angegebenen Dateipfad
LdmDocxWriter.write_to_bytes(doc)Gibt den DOCX-Inhalt als bytes zurück
LdmDocxWriter.optionsWriter-Konfigurationsoptionen
DocxWriterLossyWarningWarnung, die ausgegeben wird, wenn ein LDM-Konstrukt beim Schreiben verworfen wird
DocumentReaderLiest eine DOCX-Datei und erstellt die LDM-Darstellung
DocumentReader.to_light_document()Gibt das geladene Dokument als LDM Document zurück

Siehe auch

 Deutsch