Créer un modèle de document lumineux avec DocumentReader
Créer un modèle de document lumineux avec DocumentReader
DocumentReader Il s’agit du point d’entrée pour la lecture des fichiers DOCX dans Aspose.Words FOSS. Il accepte l’entrée comme un fil, un I/O stream ou des bytes crus, puis expose le fichier. Document comme a light_document_model.Document (LDM) - un objet de Python structuré Un arbre qui est facile à inspecter et à transformer.
Principaux
| Requirements | détails |
|---|---|
| Python | 3.9 or later |
| Package | aspose-words-foss (Mont en licence) |
| Introduction | A .docx fichiers, flux ou bytes |
pip install aspose-words-fossChargement à partir d’un chemin de fichier
DocumentReader.load_file(filepath) Lire un fichier DOCX par voie. to_light_document() Pour obtenir la représentation LDM.
from aspose.words_foss import DocumentReader
reader = DocumentReader()
reader.load_file("data/report.docx")
doc = reader.to_light_document()
print("Page count:", doc.page_count)
print("Sections:", len(doc.sections))Enchargeant d’un courant
DocumentReader.load_stream(stream) accepte tout objet de fichier avec un read() Ceci est utile pour les données provenant de réponses HTTP, des archives ZIP ou Les buffers de mémoire.
from aspose.words_foss import DocumentReader
reader = DocumentReader()
with open("data/report.docx", "rb") as fh:
reader.load_stream(fh)
doc = reader.to_light_document()
print("Paragraphs:", len(doc.all_paragraphs))Charger des Bytes
DocumentReader.load_bytes(data) accepter A bytes ou bytearray Objet : Utilisation lorsque le contenu DOCX est déjà en mémoire (par exemple, obtenu d’une base de données) ou programmés par le biais de la construction).
from aspose.words_foss import DocumentReader
with open("data/report.docx", "rb") as fh:
data = fh.read()
reader = DocumentReader()
reader.load_bytes(data)
doc = reader.to_light_document()
print("Text preview:", doc.text[:200])Navigation dans la structure LDM
Après la convocation to_light_document(),Le retourné Document L’objet expose la Le document complet :
from aspose.words_foss import DocumentReader
reader = DocumentReader()
reader.load_file("data/report.docx")
doc = reader.to_light_document()
# Sections
for section in doc.sections:
print("Section paragraphs:", len(section.paragraphs))
# All paragraphs (flat list across all sections)
for para in doc.all_paragraphs:
if para.text.strip():
print(" -", para.text[:80])
# Headings
for heading in doc.headings(max_level=2):
print("H:", heading.text)Lire le texte complet du document
Document.text - Remboursement du contenu en texte complet du document, - Concatenant tous les paragraphes dans toutes les sections :
reader = DocumentReader()
reader.load_file("data/report.docx")
doc = reader.to_light_document()
print(doc.text[:500])Conseils et meilleures pratiques
- Toujours appeler
load_file(),load_stream(),ouload_bytes()Avant de appelerto_light_document()- appelerto_light_document()sur un lecteur non chargé Il peut causer une erreur ou retourner un document vide. - Utiliser
load_bytes()lorsque vous contrôlez le cycle de vie du document dans la mémoire; il évite ouverture des fichiers. - Utiliser
doc.all_paragraphspour une itération plate sur tous les paragraphes ; utilisationdoc.sectionsQuand vous devez travailler section par section. DocumentReaderImplémentationsLdmBuilderMixin,Ce qui signifieto_light_document()est disponible en tant que méthode mixte — la même interface est partagée avec d’autres lecteurs Les cours dans la bibliothèque.
Les problèmes communs
| Problème | Cause | Fixé |
|---|---|---|
vide doc.sections Après la charge | Le fichier n’est pas un DOCX valide. | Vérifiez que le fichier s’ouvre dans Word ; vérifie qu’il n’est pas protégé par mot de passe. |
doc.all_paragraphs est vide | Le document n’a pas de texte corporel (par exemple, seuls les chefs/footers) | Vérifier doc.header_paragraphs et doc.footer_paragraphs Au lieu de |
AttributeError sur to_light_document() | La méthode de charge qui n’est pas appelée avant la conversion | Appelez un de load_file(), load_stream(),ou load_bytes() Première |
FAQ
Qu’est ce que le LDM ?
Le modèle de document (light_document_model.DocumentIl est un abstrait, Arbre d’objet natif de Python représentant un document Word. Il séparera la logique du document du format binaire DOCX et est conçu pour une manipulation programmatique facile.
Puis-je modifier le LDM et l’écrire à DOCX ?
Après avoir modifié le doc Objet, passez-le à LdmDocxWriter.write(doc, path) pour produire un fichier DOCX mis à jour. voir le Guide de l’auteur Docx Pour les détails.
Ce que fait LdmBuilderMixin ajouter ?
LdmBuilderMixin Il fournit le to_light_document() méthode . DocumentReader hérite de lui, vous pouvez toujours accéder à cette méthode via l’instance lecteur.
Le résumé de référence API
| Classes / Méthodes | Description |
|---|---|
DocumentReader | Lire l’entrée DOCX et construire la représentation LDM |
DocumentReader.load_file(filepath) | Télécharger un fichier DOCX par voie |
DocumentReader.load_stream(stream) | Enregistrement d’un fichier-like stream |
DocumentReader.load_bytes(data) | Le chargement d’une bytes Objets |
DocumentReader.to_light_document() | Retourner le document chargé en tant que LDM Document |
LdmBuilderMixin | Le mélange qui fournit to_light_document() |
Document.sections | Liste des sections du document |
Document.all_paragraphs | Liste des paragraphes de tous les articles |
Document.text | Contenu en texte complet du document |
Document.page_count | Nombre de pages |
Document.headings(max_level) | Liste des paragraphes de la liste au-dessus du max_level |