Zapisování souborů DOCX pomocí LdmDocxWriter

Zapisování souborů DOCX pomocí LdmDocxWriter

Zapisování souborů DOCX pomocí LdmDocxWriter

LdmDocxWriter převádí objekt light_document_model.Document (LDM) na soubor DOCX. Je to zápisová protějšek k DocumentReader, který čte soubory DOCX a zpřístupňuje je jako strom LDM. Společně tvoří obousměrný kanál: DocumentReader dovnitř, LdmDocxWriter ven.


Požadavky

PožadavekDetail
Python3.9 nebo novější
Packageaspose-words-foss (licencováno pod MIT)
InputInstance light_document_model.Document
pip install aspose-words-foss

Zapsat do souborové cesty

LdmDocxWriter.write(doc, output_path) serializuje dokument LDM do souboru DOCX na zadané cestě. Pokud nadřazený adresář cesty neexistuje, volání vyvolá 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")

Zapsat do bajtů (výstup v paměti)

LdmDocxWriter.write_to_bytes(doc) vrací obsah DOCX jako objekt bytes. Použijte to, když potřebujete soubor poslat přes síť, uložit jej do databáze nebo se úplně vyhnout zápisu na souborový systém.

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)

Vzor round-trip

Nejčastějším případem použití je průchod čtení-úprava-zápis:

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

Varování při ztrátovém zápisu

Když LdmDocxWriter nedokáže věrně reprezentovat konstrukci LDM v formátu DOCX, vydá DocxWriterLossyWarning. Tyto můžete zachytit pomocí modulu warnings v Python, abyste auditovali, co bylo vynecháno:

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)

Tipy a osvědčené postupy

  • Vždy zavolejte DocumentReader.to_light_document() před předáním dokumentu do LdmDocxWriter — zapisovač očekává LDM Document, nikoli surový DocumentReader.
  • Použijte write_to_bytes() ve webových obslužných funkcích, abyste se vyhnuli správě dočasných souborů.
  • Zkontrolujte DocxWriterLossyWarning v testech, abyste odhalili regresní chyby při zpětném průchodu při aktualizaci knihovny.
  • LdmDocxWriter.options je k dispozici pro konfiguraci na úrovni zapisovače; prohlédněte objekt po vytvoření, abyste viděli dostupná nastavení.

Časté problémy

ProblémPříčinaOprava
FileNotFoundError na write()Nadřazený adresář neexistujeVytvořte výstupní adresář pomocí Path.mkdir(parents=True, exist_ok=True) před voláním write()
DocxWriterLossyWarning emitovánoKonstrukce LDM nelze v DOCX reprezentovatZkontrolujte varovnou zprávu; přijměte ztrátu nebo upravte LDM před zápisem
Prázdný výstupní DOCXDokument LDM neobsahuje žádné sekce ani odstavceOvěřte, že ldm_doc.sections a ldm_doc.all_paragraphs nejsou po načtení prázdné

FAQ

Co je LDM (light_document_model)?

LDM je abstraktní, Python-nativní reprezentace Word dokumentu od Aspose.Words FOSS. Odděluje logiku dokumentu od binárního formátu DOCX a usnadňuje programově prohlížet a manipulovat se strukturou dokumentu.

Mohu zapisovat do PDF místo DOCX?

Ano — použijte LdmPdfWriter.write(doc, output_path) ze stejného balíčku pro výstup PDF, nebo LdmMarkdownWriter.write(doc, output_path) pro Markdown.

Vyžaduje write_to_bytes() výstupní cestu?

Ne. write_to_bytes(doc) bere pouze dokument LDM a vrací objekt bytes bez interakce se souborovým systémem.


API Reference Shrnutí

Třída / MetodaPopis:
LdmDocxWriterPřevede LDM Document na soubor DOCX
LdmDocxWriter.write(doc, output_path)Zapíše DOCX do zadané cesty souboru
LdmDocxWriter.write_to_bytes(doc)Vrací obsah DOCX jako bytes
LdmDocxWriter.optionsMožnosti konfigurace zapisovače
DocxWriterLossyWarningVarování vyvoláno, když je během zápisu vynechána konstrukce LDM
DocumentReaderNačte soubor DOCX a vytvoří reprezentaci LDM
DocumentReader.to_light_document()Vrací načtený dokument jako LDM Document

Viz také:

 Čeština