Skriv DOCX filer med LdmDocxWriter
Skriv DOCX filer med LdmDocxWriter
LdmDocxWriter Konverterar A light_document_model.Document (LDM) objektet i en DOCX-fil. det är den skrivande motsvarigheten till DocumentReader, som läser DOCX-filer och exponerar dem som ett LDM-träd. Tillsammans bildar de en rundrutt: DocumentReader i den, LdmDocxWriter ut på.
Prerequisites
| Requirement | Detail |
|---|---|
| Python | 3.9 or later |
| Package | aspose-words-foss (Licenserad av MIT) |
| Inträde | A och light_document_model.Document instans |
pip install aspose-words-fossSkriv till en filvägen
LdmDocxWriter.write(doc, output_path) Serierar LDM-dokumentet till en DOCX filen på den angivna vägen. om det föräldraledighet i vägen inte finns samtalet kommer att höja 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")Skriv till bytes (in-memory output)
LdmDocxWriter.write_to_bytes(doc) returnerar DOCX-innehållet som en bytes och objekt. Använd detta när du behöver skicka filen över ett nätverk, lagra den i en databas eller Undvik att skriva till filsystemet helt.
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)
---
### Runda färdspåren
Den vanligaste användningsförfarandet är en läs-modifierad-skriv rundresa:
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")Förlust av varningar
When LdmDocxWriter kan inte trovärdigt representera en LDM konstruerad i DOCX-format Det ger ut en DocxWriterLossyWarning.Du kan fånga dessa med Python warnings Modul för att granska vad som har kastats:
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)Tips och bästa praxis
- Alltid ringa
DocumentReader.to_light_document()Innan du skickar dokumentet tillLdmDocxWriterFörfattaren förväntar sig en LDM.Document,Inte en råDocumentReader. - Användning
write_to_bytes()i web-handlare för att undvika tillfällig filhantering. - Check
DocxWriterLossyWarningi tester för att upptäcka rundtur regressioner när Uppgradera biblioteket. LdmDocxWriter.optionsär tillgänglig för konfiguration på skrivarenivå; kontrollera objekt efter instantiation för att se tillgängliga inställningar.
Vanliga frågor
| Issue | Cause | Fixar |
|---|---|---|
FileNotFoundError på write() | Föräldradirektorn finns inte | Skapa utgångsdirektivet med Path.mkdir(parents=True, exist_ok=True) Innan du ringer write() |
DocxWriterLossyWarning utfärdade | LDM konstruera inte representativ i DOCX | Övervaka varningsmeddelandet; acceptera förlusten eller justera LDM innan du skriver |
| tom utgång DOCX | LDM-dokumentet har inga avsnitt eller stycken | Verify ldm_doc.sections och ldm_doc.all_paragraphs är oförmögen efter lastning |
FAQ
Vad är LDM (light_document_model)?
LDM är Aspose.Words FOSS abstrakt, Python-native representation av ett Word-dokument. Det decouples dokument logik från DOCX binär format och gör det lättare att inspektera och manipulera dokumentstrukturen programmatiskt.
Kan jag skriva i PDF istället för DOCX?
Ja - Använd LdmPdfWriter.write(doc, output_path) från samma paket för PDF produktion, eller LdmMarkdownWriter.write(doc, output_path) för markdown.
Does write_to_bytes() Behöver du en utgångsväg?
Nej inte. write_to_bytes(doc) tar endast LDM-dokumentet och returnerar en bytes Objektet utan filsysteminteraktion.
API Referens sammanfattning
| Klass / Metod | Beskrivning |
|---|---|
LdmDocxWriter | Konverterar en LDM Document Till en DOCX-fil |
LdmDocxWriter.write(doc, output_path) | Skriv DOCX till den angivna filvägen |
LdmDocxWriter.write_to_bytes(doc) | Returnerar DOCX-innehållet som bytes |
LdmDocxWriter.options | Skrivaren konfiguration alternativ |
DocxWriterLossyWarning | Varning upphöjd när en LDM-konstruktion faller under skrivandet |
DocumentReader | Läser en DOCX-fil och bygger LDM-representationen |
DocumentReader.to_light_document() | Returnerar det laddade dokumentet som en LDM Document |