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
| Requirement | Detail |
|---|---|
| Python | 3.9 or later |
| Package | aspose-words-foss (Licència MIT) |
| Input | A. El dia de la mort: light_document_model.Document instància |
pip install aspose-words-fossEscriure 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:LdmDocxWriterl’escriptor espera un LDMDocument, no un brutDocumentReader. - Utilització:
write_to_bytes()en els manipuladors web per evitar la gestió temporal de fitxers. - Check
DocxWriterLossyWarningen proves per detectar regressions d’anar i venir quan: actualitzant la biblioteca. LdmDocxWriter.optionsestà 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
| Issue | Cause | Correcció |
|---|---|---|
FileNotFoundError en el write() | No existeix directori principal | Crear el directori de sortida amb: Path.mkdir(parents=True, exist_ok=True) abans de trucar. write() |
DocxWriterLossyWarning emès | Construcció LDM no representable en DOCX | Revisar el missatge d’avertència; acceptar la pèrdua o ajustar l’LDM abans de escriure. |
| Exportació buida DOCX | Document LDM no té seccions ni paràgrafs | Verify 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ètode | Description |
|---|---|
LdmDocxWriter | Converteix 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.options | Opcions de configuració d’escriptora |
DocxWriterLossyWarning | Advertiment al·levat quan es deixa caure una construcció de LDM durant l’escriptura. |
DocumentReader | Llegeix un arxiu DOCX i construeix la representació de l’LDM. |
DocumentReader.to_light_document() | Retorna el document carregat com a LDM. Document |