DOCX-bestanden schrijven met LdmDocxWriter

DOCX-bestanden schrijven met LdmDocxWriter

DOCX-bestanden schrijven met LdmDocxWriter

LdmDocxWriter zet een light_document_model.Document (LDM)-object om in een DOCX-bestand. Het is de schrijf-tegenhanger van DocumentReader, die DOCX-bestanden leest en ze als een LDM-boom blootlegt. Samen vormen ze een round-trip-pijplijn: DocumentReader in, LdmDocxWriter uit.


Vereisten

VereisteDetail
Python3.9 of hoger
Packageaspose-words-foss (MIT-gelicentieerd)
InputEen light_document_model.Document instantie
pip install aspose-words-foss

Schrijf naar een bestandspad

LdmDocxWriter.write(doc, output_path) serialiseert het LDM-document naar een DOCX-bestand op het opgegeven pad. Als de bovenliggende map van het pad niet bestaat, zal de oproep FileNotFoundError genereren.

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

Schrijf naar bytes (In-Memory-output)

LdmDocxWriter.write_to_bytes(doc) retourneert de DOCX-inhoud als een bytes object. Gebruik dit wanneer je het bestand over een netwerk moet verzenden, in een database moet opslaan, of het volledig vermijden om naar het bestandssysteem te schrijven.

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

De meest voorkomende gebruikssituatie is een read-modify-write round trip:

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

Lossy-Write-waarschuwingen

Wanneer LdmDocxWriter een LDM-constructie niet getrouw kan weergeven in DOCX-formaat, geeft het een DocxWriterLossyWarning uit. Je kunt deze vastleggen met de warnings module van Python om te controleren wat er is weggelaten:

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)

Tips en best practices

  • Roep altijd DocumentReader.to_light_document() aan voordat je het document doorgeeft aan LdmDocxWriter — de writer verwacht een LDM Document, geen ruwe DocumentReader.
  • Gebruik write_to_bytes() in webhandlers om tijdelijk bestandsbeheer te vermijden.
  • Controleer DocxWriterLossyWarning in tests om round-trip regressies te detecteren bij het upgraden van de bibliotheek.
  • LdmDocxWriter.options is beschikbaar voor configuratie op schrijversniveau; inspecteer het object na de instantiering om de beschikbare instellingen te zien.

Veelvoorkomende problemen

ProbleemOorzaakOplossing
FileNotFoundError op write()Bovenliggende map bestaat nietMaak de uitvoermap aan met Path.mkdir(parents=True, exist_ok=True) voordat write() wordt aangeroepen
DocxWriterLossyWarning uitgezondenLDM-construct niet representabel in DOCXBekijk de waarschuwingsmelding; accepteer het verlies of pas de LDM aan voordat u schrijft
Lege uitvoer-DOCXLDM-document heeft geen secties of alinea’sControleer of ldm_doc.sections en ldm_doc.all_paragraphs niet leeg zijn na het laden

FAQ

Wat is de LDM (light_document_model)?

De LDM is Aspose.Words FOSS’s abstracte, Python-native weergave van een Word-document. Het ontkoppelt de documentlogica van het binaire DOCX-formaat en maakt het eenvoudiger om de documentstructuur programmatisch te inspecteren en te manipuleren.

Kan ik naar PDF schrijven in plaats van DOCX?

Ja — gebruik LdmPdfWriter.write(doc, output_path) uit hetzelfde pakket voor PDF-uitvoer, of LdmMarkdownWriter.write(doc, output_path) voor Markdown.

Vereist write_to_bytes() een uitvoerpad?

Nee. write_to_bytes(doc) neemt alleen het LDM-document en retourneert een bytes object zonder bestandsysteeminteractie.


API Reference Samenvatting

Klasse / MethodeBeschrijving
LdmDocxWriterConverteert een LDM Document naar een DOCX-bestand
LdmDocxWriter.write(doc, output_path)Schrijft DOCX naar het opgegeven bestandspad
LdmDocxWriter.write_to_bytes(doc)Retourneert de DOCX-inhoud als bytes
LdmDocxWriter.optionsWriter-configuratieopties
DocxWriterLossyWarningWaarschuwing die wordt opgegeven wanneer een LDM-construct wordt weggelaten tijdens het schrijven
DocumentReaderLeest een DOCX-bestand en bouwt de LDM-representatie
DocumentReader.to_light_document()Retourneert het geladen document als een LDM Document

Zie ook

 Nederlands