Escriure arxius DOCX amb LdmDocxWriter

Escriure arxius DOCX amb LdmDocxWriter

Escriure arxius DOCX amb LdmDocxWriter

LdmDocxWriter converteix a light_document_model.Document (LDM) objecte en un És la contrapartida d’escriure a DOCX. DocumentReader, que llegeix arxius DOCX I els exposa com un arbre de LDM. Juntament formen una línia d’enrutament: DocumentReader en, LdmDocxWriter - A fora.


Prerequisites

RequirementDetail
Python3.9 or later
Packageaspose-words-foss (Licència MIT)
InputA. El dia de la mort: light_document_model.Document instància
pip install aspose-words-foss

Escriure a una ruta de fitxer

LdmDocxWriter.write(doc, output_path) serialitza el document LDM en un DOCX. Si el directori principal de la ruta no existeix, l’anomenada “Directòria” s’utilitza per a fer una crida. augmentarà FileNotFoundError.

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

Escriure a Bytes (Sort de la memòria)

LdmDocxWriter.write_to_bytes(doc) Retorna el contingut DOCX com a bytes objecte. Utilitzeu-ho quan necessiteu enviar el fitxer a través d’una xarxa, emmagatzemar-lo en una base de dades o evitar escriure al sistema de fitxers completament.

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)


---

### Pauta de tornada i retorn

El cas d'ús més comú és un viatge de lectura-modificació-escriptura:

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

Advertences de text perdut

When LdmDocxWriter no pot representar fidelment una construcció LDM en format DOCX. emeteix un DocxWriterLossyWarning.Pots capturar-les amb les de Python. warnings Mòdul per auditar el que es va deixar caure:

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)

Consells i millors pràctiques

  • Sempre trucar. DocumentReader.to_light_document() abans de passar el document a: LdmDocxWriter l’escriptor espera un LDM Document, no un brut DocumentReader.
  • Utilització: write_to_bytes() en els manipuladors web per evitar la gestió temporal de fitxers.
  • Check DocxWriterLossyWarning en proves per detectar regressions d’anar i venir quan: actualitzant la biblioteca.
  • LdmDocxWriter.options està disponible per a la configuració de nivell d’escriptor; inspeccionar el sistema de control. object després de la instància per veure les configuracions disponibles.

Problemàtiques comuns

IssueCauseCorrecció
FileNotFoundError en el write()No existeix directori principalCrear el directori de sortida amb: Path.mkdir(parents=True, exist_ok=True) abans de trucar. write()
DocxWriterLossyWarning emèsConstrucció LDM no representable en DOCXRevisar el missatge d’avertència; acceptar la pèrdua o ajustar l’LDM abans de escriure.
Exportació buida DOCXDocument LDM no té seccions ni paràgrafsVerify ldm_doc.sections i de la ldm_doc.all_paragraphs no estan buits després de la càrrega.

FAQ

Què és el LDM (light_document_model)?

LDM és l’abstracta representació de Python-nativa d’un document Word per Aspose.Words FOSS. Desacopla la lògica del document del format binari DOCX i fa més fàcil inspeccionar i manipular l ’estructura del documento programàticament .

Puc escriure en PDF en comptes de DOCX?

Sí ús LdmPdfWriter.write(doc, output_path) del mateix paquet per PDF. producció, o LdmMarkdownWriter.write(doc, output_path) per a Markdown.

Does write_to_bytes() necessiten una ruta de sortida?

No, no ho sé. write_to_bytes(doc) pren només el document LDM i retorna un bytes objecte sense interacció amb el sistema de fitxers.


Resum de referència d’API

Classe / mètodeDescription
LdmDocxWriterConverteix un LDM Document a un arxiu DOCX
LdmDocxWriter.write(doc, output_path)Escriu DOCX a la ruta de fitxer especificada
LdmDocxWriter.write_to_bytes(doc)Retorna el contingut DOCX com: bytes
LdmDocxWriter.optionsOpcions de configuració d’escriptora
DocxWriterLossyWarningAdvertiment al·levat quan es deixa caure una construcció de LDM durant l’escriptura.
DocumentReaderLlegeix un arxiu DOCX i construeix la representació de l’LDM.
DocumentReader.to_light_document()Retorna el document carregat com a LDM. Document

See Also

 Català