Creación de un modelo de documento ligero con DocumentReader

Creación de un modelo de documento ligero con DocumentReader

Creación de un modelo de documento ligero con DocumentReader

DocumentReader Es el punto de entrada para la lectura de los archivos DOCX en Aspose.Words FOSS. Se acepta la entrada como un camino de archivo, un flujo I/O o bajetas crudas, y luego exponer el El documento como a light_document_model.Document (LDM) - un objeto de Python estructurado Un árbol que es fácil de inspeccionar y transformar.


Prediciones

RequisitosDetalles
Python3.9 or later
paqueteaspose-words-foss (MIT Licenciado en el Servicio)
IntroducciónA .docx El archivo, el flujo o bytes
pip install aspose-words-foss

Cargando desde una ruta de archivo

DocumentReader.load_file(filepath) Lea un archivo DOCX por vía. llamado to_light_document() Después de ello, se consigue la representación 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))

Cargar desde un flujo

DocumentReader.load_stream(stream) acepta cualquier objeto de archivo similar con un read() Esto es útil para los datos que vienen de respuestas HTTP, archivos ZIP o Buffers de 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))

Cargar de los Bytes

DocumentReader.load_bytes(data) acepta a bytes o bytearray Objeto: Usar Esto ocurre cuando el contenido de DOCX ya está en memoria (por ejemplo, grabado desde una base de datos) o construidas de forma programática).

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

Navegación de la estructura LDM

Después de llamar to_light_document(),El devuelto Document El objeto exponerá la El árbol de documento completo:

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)

Leer texto completo de documento

Document.text devolver el contenido completo del documento, Concatenar todo el texto del párrafo en todas las secciones:

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

Consejos y mejores prácticas

  • Siempre llamo load_file(), load_stream(),o load_bytes() Antes de llamar to_light_document() - llamando to_light_document() En un lector descargado Puede causar un error o devolver un documento vacío.
  • Uso load_bytes() cuando controlas el ciclo de vida del documento en la memoria; evita Abre los archivos de mano.
  • Uso doc.all_paragraphs para una iteración plana sobre todos los párrafos; uso doc.sections Cuando necesitas trabajar sección por sección.
  • DocumentReader implantaciones LdmBuilderMixin, lo que significa to_light_document() está disponible como método mixin — la misma interfaz se comparte con otros lectores clases en la biblioteca.

Problemas comunes

ProblemasCausasFixado
vacío doc.sections Después de la cargaEl archivo no es un DOCX válido.Verificar el archivo se abre en Word; verifique que no está protegido por contraseña.
doc.all_paragraphs Es vacíoEl documento no tiene texto corporal (por ejemplo, solo los header/footers)Verificar doc.header_paragraphs y doc.footer_paragraphs En lugar de
AttributeError En el to_light_document()El método de carga no llamado antes de la conversiónllamando uno de load_file(), load_stream(),o load_bytes() Primero

FAQ

¿Qué es el LDM?

El modelo de documento de luz (light_document_model.DocumentEs un abstracto, El árbol de objetos nativos de Python representa un documento Word. Se separa la lógica del documento El formato binario DOCX está diseñado para manipulación programática.

¿Puedo modificar el LDM y volver a escribirlo en DOCX?

Si, después de modificar la doc Objeto, pasa a LdmDocxWriter.write(doc, path) para producir un archivo DOCX actualizado. ver el Guía de DocxWriter Para los detalles.

Lo que hace LdmBuilderMixin ¿Añadir ?

LdmBuilderMixin proporciona el to_light_document() El método. DocumentReader heredados de él para que siempre acceda a este método a través del instante lector.


Sumación de referencia API

Clase / MétodoDescripción
DocumentReaderLea la entrada DOCX y construye la representación LDM
DocumentReader.load_file(filepath)Carga un archivo DOCX por camino
DocumentReader.load_stream(stream)Carga de un archivo-like stream
DocumentReader.load_bytes(data)Carga de A bytes Objeto
DocumentReader.to_light_document()Retorna el documento cargado como LDM Document
LdmBuilderMixinLa mezcla que proporciona to_light_document()
Document.sectionsLista de secciones del documento
Document.all_paragraphsLista de todos los párrafos
Document.textContenido de texto completo del documento
Document.page_countNúmero de páginas
Document.headings(max_level)Lista de los párrafos en la parte superior a max_level

Ver también

 Español