Escribir archivos DOCX con LdmDocxWriter
Escribir archivos DOCX con LdmDocxWriter
LdmDocxWriter Convertir a light_document_model.Document (LDM) objeto en el Docx: es el equivalente de la escritura a DocumentReader, que lee los archivos DOCX y los expone como un árbol LDM. Juntos forman una tubería redonda: DocumentReader En el, LdmDocxWriter y fuera.
Prediciones
| Requisitos | Detalles |
|---|---|
| Python | 3.9 or later |
| paquete | aspose-words-foss (MIT Licenciado en el Servicio) |
| Introducción | A light_document_model.Document instancia |
pip install aspose-words-fossEscribe a un archivo de ruta
LdmDocxWriter.write(doc, output_path) Se puede ser la serie de documentos LDM a DOCX. archivo en el camino dado. si la directora materna del camino no existe la llamada Se subirá 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")Escribir a los bites (en memoria)
LdmDocxWriter.write_to_bytes(doc) devolver el contenido DOCX como un bytes El objeto. Utilice esto cuando necesita enviar el archivo a través de una red, almacenarlo en una base de datos o Evitar escribir en el sistema de archivos por completo.
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)El patrón de ruta
El caso de uso más común es un viaje redondo de lectura-modificación-escritura:
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")Losos-Escribir Avisos
Cuando LdmDocxWriter No puede representar fielmente un construido LDM en formato DOCX. Emite a DocxWriterLossyWarning.Puedes capturar estos con Python. warnings Modulo para revisar lo que se ha caído:
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)Consejos y mejores prácticas
- Siempre llamo
DocumentReader.to_light_document()Antes de que el documento se entregue aLdmDocxWriterEl autor espera un LDM.Document,No es una raízDocumentReader. - Uso
write_to_bytes()en los operadores web para evitar la gestión de archivos temporales. - Verificar
DocxWriterLossyWarningLos ensayos de retrocesos en los circuitos se realizan cuando Upgrade de la biblioteca. LdmDocxWriter.optionsestá disponible para la configuración de nivel de escritor; inspecciona el Objeto después de la instancia para ver las configuraciones disponibles.
Problemas comunes
| Problemas | Causas | Fixado |
|---|---|---|
FileNotFoundError En el write() | El directorio de padres no existe. | Crea el directorio de salida con Path.mkdir(parents=True, exist_ok=True) Antes de llamar write() |
DocxWriterLossyWarning emitir | El LDM no es representativo en DOCX. | Revisa el mensaje de alerta; acepta la pérdida o ajusta el LDM antes de escribir |
| Pérdida de salida DOCX | El documento de LDM no tiene secciones ni parágrafos. | Verificar ldm_doc.sections y ldm_doc.all_paragraphs No son vacíos después de la carga |
FAQ
¿Qué es el LDM? (light_document_model)?
El LDM es la representación abstracta, nativa de Python de un documento Word. Descompone la lógica del documento del formato binario DOCX y hace más fácil inspeccionar y manipular la estructura del texto programáticamente.
¿Puedo escribir en PDF en lugar de DOCX?
Sí - uso LdmPdfWriter.write(doc, output_path) de la misma paquete para PDF de producción, o LdmMarkdownWriter.write(doc, output_path) para el Markdown.
¿Qué hace write_to_bytes() ¿Necesita un camino de salida?
No no. write_to_bytes(doc) recibe el documento LDM y devolve a la bytes Objeto Sin interacción de archivos.
Sumación de referencia API
| Clase / Método | Descripción |
|---|---|
LdmDocxWriter | Convertir un LDM Document En el archivo DOCX |
LdmDocxWriter.write(doc, output_path) | Escribe DOCX en el camino de archivo especificado |
LdmDocxWriter.write_to_bytes(doc) | Retorna el contenido de DOCX como bytes |
LdmDocxWriter.options | Opciones de configuración del escritor |
DocxWriterLossyWarning | Alertamiento levantado cuando un constructo LDM se cae durante la escritura |
DocumentReader | Lectura de un archivo DOCX y construcción de la representación LDM |
DocumentReader.to_light_document() | Retorna el documento cargado como LDM Document |