Escribir archivos DOCX con LdmDocxWriter

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

RequisitosDetalles
Python3.9 or later
paqueteaspose-words-foss (MIT Licenciado en el Servicio)
IntroducciónA light_document_model.Document instancia
pip install aspose-words-foss

Escribe 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 a LdmDocxWriter El autor espera un LDM. Document,No es una raíz DocumentReader.
  • Uso write_to_bytes() en los operadores web para evitar la gestión de archivos temporales.
  • Verificar DocxWriterLossyWarning Los ensayos de retrocesos en los circuitos se realizan cuando Upgrade de la biblioteca.
  • LdmDocxWriter.options está disponible para la configuración de nivel de escritor; inspecciona el Objeto después de la instancia para ver las configuraciones disponibles.

Problemas comunes

ProblemasCausasFixado
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 emitirEl 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 DOCXEl 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étodoDescripción
LdmDocxWriterConvertir 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.optionsOpciones de configuración del escritor
DocxWriterLossyWarningAlertamiento levantado cuando un constructo LDM se cae durante la escritura
DocumentReaderLectura de un archivo DOCX y construcción de la representación LDM
DocumentReader.to_light_document()Retorna el documento cargado como LDM Document

Ver también

 Español