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
| Requisitos | Detalles |
|---|---|
| Python | 3.9 or later |
| paquete | aspose-words-foss (MIT Licenciado en el Servicio) |
| Introducción | A .docx El archivo, el flujo o bytes |
pip install aspose-words-fossCargando 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(),oload_bytes()Antes de llamarto_light_document()- llamandoto_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_paragraphspara una iteración plana sobre todos los párrafos; usodoc.sectionsCuando necesitas trabajar sección por sección. DocumentReaderimplantacionesLdmBuilderMixin, lo que significato_light_document()está disponible como método mixin — la misma interfaz se comparte con otros lectores clases en la biblioteca.
Problemas comunes
| Problemas | Causas | Fixado |
|---|---|---|
vacío doc.sections Después de la carga | El 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ío | El 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ón | llamando 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étodo | Descripción |
|---|---|
DocumentReader | Lea 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 |
LdmBuilderMixin | La mezcla que proporciona to_light_document() |
Document.sections | Lista de secciones del documento |
Document.all_paragraphs | Lista de todos los párrafos |
Document.text | Contenido de texto completo del documento |
Document.page_count | Número de páginas |
Document.headings(max_level) | Lista de los párrafos en la parte superior a max_level |