Creare un modello di documento leggero con DocumentReader

Creare un modello di documento leggero con DocumentReader

Costruire un Light Document Model con DocumentReader

DocumentReader è il punto di ingresso per la lettura dei file DOCX in Aspose.Words FOSS. Accetta input come percorso file, stream I/O o byte grezzi, quindi espone il documento come un light_document_model.Document (LDM) — un albero di oggetti Python strutturato, facile da ispezionare e trasformare.


Prerequisiti

RequisitoDettaglio
Python3.9 o successive
Packageaspose-words-foss (MIT-licensed)
InputUn file .docx, stream o bytes
pip install aspose-words-foss

Caricamento da un percorso file

DocumentReader.load_file(filepath) legge un file DOCX per percorso. Chiama to_light_document() successivamente per ottenere la rappresentazione 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))

Caricamento da uno stream

DocumentReader.load_stream(stream) accetta qualsiasi oggetto simile a un file con un metodo read(). Questo è utile per dati provenienti da risposte HTTP, archivi ZIP o buffer in memoria.

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

Caricamento da byte

DocumentReader.load_bytes(data) accetta un oggetto bytes o bytearray. Usa questo quando il contenuto DOCX è già in memoria (ad es. recuperato da un database o costruito programmaticamente).

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

Navigazione della struttura LDM

Dopo aver chiamato to_light_document(), l’oggetto Document restituito espone l’intero albero del documento:

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)

Lettura del testo completo del documento

Document.text restituisce il contenuto di testo semplice completo del documento, concatenando tutto il testo dei paragrafi in tutte le sezioni:

reader = DocumentReader()
reader.load_file("data/report.docx")
doc = reader.to_light_document()
print(doc.text[:500])

Suggerimenti e migliori pratiche

  • Chiama sempre load_file(), load_stream() o load_bytes() prima di chiamare to_light_document() — chiamare to_light_document() su un lettore non caricato può generare un errore o restituire un documento vuoto.
  • Utilizza load_bytes() quando gestisci il ciclo di vita del documento in memoria; evita di aprire handle di file.
  • Usa doc.all_paragraphs per un’iterazione piatta su tutti i paragrafi; usa doc.sections quando devi lavorare sezione per sezione.
  • DocumentReader implementa LdmBuilderMixin, il che significa che to_light_document() è disponibile come metodo mixin — la stessa interfaccia è condivisa con altre classi reader nella libreria.

Problemi comuni

ProblemaCausaCorrezione
Vuoto doc.sections dopo il caricamentoIl file non è un DOCX validoVerifica che il file si apra in Word; controlla che non sia protetto da password
doc.all_paragraphs è vuotoIl documento non ha testo nel corpo (es. solo intestazioni/piè di pagina)Controlla doc.header_paragraphs e doc.footer_paragraphs invece
AttributeError su to_light_document()Metodo di caricamento non chiamato prima della conversioneChiama prima uno di load_file(), load_stream() o load_bytes()

FAQ

Cos’è il LDM?

Il modello di documento leggero (light_document_model.Document) è un albero di oggetti astratto, nativo di Python, che rappresenta un documento Word. Separa la logica del documento dal formato binario DOCX ed è progettato per una facile manipolazione programmatica.

Posso modificare l’LDM e riscriverlo in DOCX?

Sì. Dopo aver modificato il doc oggetto, passalo a LdmDocxWriter.write(doc, path) per produrre un file DOCX aggiornato. Vedi il guida LdmDocxWriter per i dettagli.

Cosa aggiunge LdmBuilderMixin?

LdmBuilderMixin fornisce il metodo to_light_document(). DocumentReader eredita da esso, quindi accedi sempre a questo metodo tramite l’istanza del lettore.


API Reference Riepilogo

Classe / MetodoDescrizione
DocumentReaderLegge l’input DOCX e costruisce la rappresentazione LDM
DocumentReader.load_file(filepath)Carica un file DOCX per percorso
DocumentReader.load_stream(stream)Carica da un flusso simile a un file
DocumentReader.load_bytes(data)Carica da un oggetto bytes
DocumentReader.to_light_document()Restituisce il documento caricato come LDM Document
LdmBuilderMixinMixin che fornisce to_light_document()
Document.sectionsElenco delle sezioni nel documento
Document.all_paragraphsElenco piatto di tutti i paragrafi
Document.textContenuto completo in plain-text del documento
Document.page_countNumero di pagine
Document.headings(max_level)Elenco dei paragrafi di intestazione fino a max_level

Vedi anche

 Italiano