Écrire des fichiers DOCX avec LdmDocxWriter

Écrire des fichiers DOCX avec LdmDocxWriter

Écrire des fichiers DOCX avec LdmDocxWriter

LdmDocxWriter Converter A light_document_model.Document (LDM) objet dans un Docx : c’est le mot de passe pour DocumentReader,qui lit les fichiers DOCX et les exposent comme un arbre LDM. Ensemble ils forment une pipeline rond-trip: DocumentReader dans le, LdmDocxWriter à l’extérieur.


Principaux

Requirementsdétails
Python3.9 or later
Packageaspose-words-foss (Mont en licence)
IntroductionA light_document_model.Document instance
pip install aspose-words-foss

Écrire à un fichier de route

LdmDocxWriter.write(doc, output_path) Sérialiser le document LDM à un DOCX fichier sur la route donnée. si le directeur parent de la voie n’existe pas la Il va augmenter 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")

Écrire à des bits (en mémoire)

LdmDocxWriter.write_to_bytes(doc) Il revient le contenu DOCX en tant que bytes objets . Utilisez-le lorsque vous devez envoyer le fichier sur un réseau, le stocker dans une base de données ou Évitez d’écrire dans le fichier entier.

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)

Le modèle de route rond

Le cas d’utilisation le plus courant est un voyage en rond de lecture-modification-écrite:

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

Avertissements de la perte

Quand LdmDocxWriter ne peut fidèlement représenter un constructe LDM dans le format DOCX Il émet une DocxWriterLossyWarning.Vous pouvez les capturer avec Python. warnings Module pour vérifier ce qui a été jeté:

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)

Conseils et meilleures pratiques

  • Toujours appeler DocumentReader.to_light_document() Avant de passer le document à LdmDocxWriter - l’auteur attend un LDM Document,Pas une raide DocumentReader.
  • Utiliser write_to_bytes() dans les serveurs web pour éviter la gestion temporaire des fichiers.
  • Vérifier DocxWriterLossyWarning des tests pour détecter les regressions rondes lorsqu’elles sont Mise à jour de la bibliothèque.
  • LdmDocxWriter.options est disponible pour la configuration au niveau d’auteur; inspecter le Objet après instantiation pour voir les paramètres disponibles.

Les problèmes communs

ProblèmeCauseFixé
FileNotFoundError sur write()Le directeur parent n’existe pasCréer le catalogue de sortie avec Path.mkdir(parents=True, exist_ok=True) Avant de appeler write()
DocxWriterLossyWarning ÉmettéLDM construit non représentable dans DOCXRéviser le message d’alerte; accepter la perte ou ajuster le LDM avant de l’écrire
Débit de la DOCXLe document LDM n’a pas de sections ou de paragraphes.Vérification ldm_doc.sections et ldm_doc.all_paragraphs Non-pouché après la charge

FAQ

Qu’est-ce que le MQ (light_document_model)?

Le LDM est Aspose.Words FOSS, la représentation abstraite et Python-native d’un document Word. Il découpage la logique du document du format binaire DOCX et il facilite l’inspection et la manipulation de la structure du dossier programmée.

Puis-je écrire en PDF au lieu de DOCX ?

Oui - Utiliser LdmPdfWriter.write(doc, output_path) du même paquet pour PDF de production, ou LdmMarkdownWriter.write(doc, output_path) pour le Markdown.

Le fait write_to_bytes() Besoin d’un chemin de départ ?

Non pas. write_to_bytes(doc) Il n’a pas de document LDM et il revient à un bytes Objets Pas d’interaction de fichier.


Le résumé de référence API

Classes / MéthodesDescription
LdmDocxWriterConvertir un LDM Document Pour un fichier DOCX
LdmDocxWriter.write(doc, output_path)Écrire DOCX sur la voie de fichier spécifiée
LdmDocxWriter.write_to_bytes(doc)Retourner le contenu DOCX comme bytes
LdmDocxWriter.optionsOptions de configuration d’écrivain
DocxWriterLossyWarningAvertissement élevé lorsque un constructe LDM est tombé pendant l’écriture
DocumentReaderLire un fichier DOCX et créer la représentation LDM
DocumentReader.to_light_document()Retourner le document chargé en tant que LDM Document

Voir aussi

 Français