Escrever arquivos DOCX com LdmDocxWriter

Escrever arquivos DOCX com LdmDocxWriter

Escrever arquivos DOCX com LdmDocxWriter

LdmDocxWriter transforma um light_document_model.Document (LDM) objeto em um É o equivalente de escrita para DOCX. DocumentReader, que lê arquivos DOCX Juntos, formam um canal de ida e volta: DocumentReader em:, LdmDocxWriter - Não, não.


Precondições

RequisitosDetalhes
Python3.9 or later
Pacote de produtosaspose-words-foss (licenciado pelo MIT)
Input (input)A. - Não . light_document_model.Document exemplo
pip install aspose-words-foss

Escrever para um caminho de arquivo

LdmDocxWriter.write(doc, output_path) Separação do documento LDM para um DOCX. Se o diretório pai do caminho não existe a chamada de “Directory” é feita. Elevará a 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")

Escrever em Bytes (Saída na memória)

LdmDocxWriter.write_to_bytes(doc) Retorna o conteúdo DOCX como um bytes Objeto. Use-o quando você precisa enviar o arquivo através de uma rede, armazená-lo em um banco de dados, ou evitar escrever para o sistema de ficheiros inteiramente.

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)

Padrão de ida e volta

O caso de uso mais comum é uma viagem ida-leia-modificar-escrever:

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

Advertências de escrita perdida

Quando ? LdmDocxWriter não pode representar fielmente uma construção LDM no formato DOCX emite uma DocxWriterLossyWarning.Podes capturar isto com o Python. warnings Módulo de auditoria do que foi descartado:

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)

Dicas e melhores práticas

  • Sempre ligue. DocumentReader.to_light_document() antes de passar o documento para a LdmDocxWriter o autor espera um LDM Document, não em bruto DocumentReader.
  • Utilização: write_to_bytes() nos processadores web para evitar a gestão temporária de ficheiros.
  • Verificação DocxWriterLossyWarning em ensaios para detectar regressões de ida e volta quando: A actualizar a biblioteca.
  • LdmDocxWriter.options está disponível para configuração de nível do escritor; inspecione o Objeto após instanciação para ver as configurações disponíveis.

Problemas comuns

EmissãoCausa da morteCorreção
FileNotFoundError em 1 de Setembro de write()Directório pai não existeCriar o diretório de saída com: Path.mkdir(parents=True, exist_ok=True) Antes de ligares. write()
DocxWriterLossyWarning emissãoConstrução LDM não representável no DOCXRever a mensagem de alerta; aceitar a perda ou ajustar o LDM antes de escrever.
Saúde do sistema de gestão da informação DOCXDocumentos de LDM sem secções ou parágrafosVerificar ldm_doc.sections e a) ldm_doc.all_paragraphs não estão vazios após a carga.

FAQ

Qual é o LDM (light_document_model)?

O LDM é a representação abstrata e nativa do Python de um documento Word da Aspose.Words FOSS. Ele desacopla a lógica do documento do formato binário DOCX e facilita a inspeção e manipulação programática da estrutura do documental.

Posso escrever em PDF ao invés de DOCX?

Sim utilização LdmPdfWriter.write(doc, output_path) do mesmo pacote para PDF. produção, ou LdmMarkdownWriter.write(doc, output_path) para o Markdown.

- Sim . write_to_bytes() Requer um caminho de saída?

  • Não, não. write_to_bytes(doc) toma apenas o documento LDM e retorna um bytes objeto sem interação com o sistema de ficheiros.

Resumo de referência da API

Classe / MétodoDescrição:
LdmDocxWriterConverte um LDM. Document para um ficheiro DOCX
LdmDocxWriter.write(doc, output_path)Escreve DOCX para o caminho de arquivo especificado
LdmDocxWriter.write_to_bytes(doc)Retorna o conteúdo DOCX como: bytes
LdmDocxWriter.optionsOpções de configuração do editor
DocxWriterLossyWarningAviso levantado quando uma construção LDM é abandonada durante a escrita
DocumentReaderLeia um arquivo DOCX e constrói a representação LDM
DocumentReader.to_light_document()Retorna o documento carregado como um LDM Document

Ver também:

 Português