Pisanje DOCX datoteka s LdmDocxWriterom

Pisanje DOCX datoteka s LdmDocxWriterom

Pisanje DOCX datoteka s LdmDocxWriterom

LdmDocxWriter pretvara u: light_document_model.Document (LDM) objekta u To je pisao ekvivalent za DOCX datoteku. DocumentReader, koji čita DOCX datoteke Zajedno formiraju putni sustav: DocumentReader u, LdmDocxWriter -Ne, ne mogu.


U skladu s člankom 21. stavkom 1.

Odluka o odobrenjuDetaljnije informacije
Python3.9 or later
Sljedeći članak:aspose-words-foss (MIT-licenciran)
Uvodni broj:A. - U redu je. light_document_model.Document primjerak
pip install aspose-words-foss

Pišite na putanje datoteke

LdmDocxWriter.write(doc, output_path) Serializira LDM dokument u DOCX. Ako matični direktorij puta ne postoji poziv na “Path” je u redu. će podići 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")

Pišite na bajtove (izlaz u memoriji)

LdmDocxWriter.write_to_bytes(doc) vraća DOCX sadržaj kao: bytes -Ne, ne mogu. Koristite to kada morate poslati datoteku preko mreže, pohraniti u bazu podataka, ili izbjegavajte pisanje u sustav datoteka.

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)

Uzorak povratka i povratke

Najčešći slučaj upotrebe je čitanje-promeniti-napisati povratno putovanje:

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

Opomene u lošem pisanju

Kada? LdmDocxWriter Ne može vjerno predstavljati LDM konstrukciju u formatu DOCX-a. izlazi od DocxWriterLossyWarning.Možete ih uhvatiti Pythonovim programom. warnings Modul za reviziju onoga što je odbačeno:

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)

Savjeti i najbolje prakse

  • Uvijek nazovi. DocumentReader.to_light_document() prije prosljeđivanja dokumenta na: LdmDocxWriter pisac očekuje LDM-a. Document, ne sirovo DocumentReader.
  • Upotreba: write_to_bytes() u web-upravljačima kako bi se izbjeglo privremeno upravljanje datotekama.
  • Čekaj. DocxWriterLossyWarning u ispitivanjima za otkrivanje regresije povratnog puta kada: Nadogradnja knjižnice.
  • LdmDocxWriter.options je dostupna za konfiguraciju na nivou pisca; provjerite objekat nakon instancizacije da bi se vidjelo dostupna postavka.

Zajednički problemi

IzdavanjeUzrokPopraviti
FileNotFoundError na: write()Roditeljskog direktorija ne postojiStvoriti izlazni direktorij pomoću: Path.mkdir(parents=True, exist_ok=True) prije nego što pozoveš. write()
DocxWriterLossyWarning izbacivanjeLDM konstrukcija nije predstavljiva u DOCX-uProučiti upozorenje; prihvatiti gubitak ili prilagoditi LDM prije pisanja
Prazan izlaz DOCXLDM dokument nema odjeljki ili stavkaPotvrditi: ldm_doc.sections i u članku 1. ldm_doc.all_paragraphs su neprazni nakon opterećenja.

FAQ

Što je LDM (light_document_model)?

LDM je apstraktna, Python-originalna reprezentacija Word dokumenta u programu Aspose.Words FOSS. Ona odvoji logiku dokumenata od binarnog formata DOCX i olakšava pregled i programski manipulirati strukturom dokumenatova.

Mogu li pisati na PDF umjesto DOCX?

Da upotreba LdmPdfWriter.write(doc, output_path) Iz istog paketa za PDF-ove proizvodnja ili LdmMarkdownWriter.write(doc, output_path) za Markdown.

Da li je? write_to_bytes() Treba li put za izlaz?

-Ne, ne mogu. write_to_bytes(doc) uzme samo dokument LDM i vraća bytes predmet bez interakcije s datotekom.


Svrha referentnog API-a

Klasa / metodaOpisivanje
LdmDocxWriterPretvara LDM-a Document na DOCX datoteku
LdmDocxWriter.write(doc, output_path)Pisanje DOCX na određenu putanju datoteke
LdmDocxWriter.write_to_bytes(doc)Vrati sadržaj DOCX-a kao: bytes
LdmDocxWriter.optionsOpcije konfiguracije pisaca
DocxWriterLossyWarningUpozoravanje kada je LDM konstrukcija odbačena tijekom pisanja.
DocumentReaderČita DOCX datoteku i gradi LDM predstavljanje
DocumentReader.to_light_document()Vrati učitavan dokument kao LDM Document

Također pogledajte:

 Hrvatski