Extracción avanzada de texto de presentaciones en Android
Visión general
Extraer texto de presentaciones es una tarea habitual pero esencial para los desarrolladores que trabajan con contenido de diapositivas. Ya sea que estés manejando archivos de Microsoft PowerPoint en formato PPT o PPTX, o presentaciones OpenDocument (ODP), acceder y obtener datos textuales puede ser fundamental para análisis, automatización, indexación o migración de contenido.
Este artículo ofrece una guía completa sobre cómo extraer texto de forma eficiente de varios formatos de presentación, incluidos PPT, PPTX y ODP, utilizando Aspose.Slides para Android mediante Java. Aprenderás a iterar sistemáticamente a través de los elementos de la presentación para recuperar con precisión el contenido textual que necesitas.
Extraer texto de una diapositiva
Aspose.Slides para Android mediante Java proporciona la clase SlideUtil. Esta clase expone varios métodos estáticos sobrecargados para extraer todo el texto de una presentación o diapositiva. Para extraer texto de una diapositiva en una presentación, utiliza el método getAllTextBoxes . Este método acepta como parámetro un objeto del tipo IBaseSlide. Al ejecutarse, el método escanea toda la diapositiva en busca de texto y devuelve una matriz de objetos del tipo ITextFrame, conservando cualquier formato de texto.
El siguiente fragmento de código extrae todo el texto de la primera diapositiva de la presentación:
int slideIndex = 0;
Presentation presentation = new Presentation("demo.pptx");
try {
ISlide slide = presentation.getSlides().get_Item(slideIndex);
ITextFrame[] textFrames = SlideUtil.getAllTextBoxes(slide);
for (ITextFrame textFrame : textFrames) {
for (IParagraph paragraph : textFrame.getParagraphs()) {
for (IPortion portion : paragraph.getPortions()) {
String portionText = portion.getText();
System.out.println(portionText);
IPortionFormat portionFormat = portion.getPortionFormat();
float fontHeight = portionFormat.getFontHeight();
System.out.println(fontHeight);
IFontData latinFont = portionFormat.getLatinFont();
if (latinFont != null) {
String fontName = latinFont.getFontName();
System.out.println(fontName);
}
}
}
}
} finally {
presentation.dispose();
}
Extraer texto de una presentación
Para escanear texto de toda la presentación, utiliza el método estático getAllTextFrames expuesto por la clase SlideUtil. Acepta dos parámetros:
- En primer lugar, un objeto IPresentation que representa una presentación de PowerPoint u OpenDocument de la que se extraerá el texto.
- En segundo lugar, un valor
booleanque indica si se deben incluir las diapositivas maestras al escanear el texto de la presentación.
El método devuelve una matriz de objetos del tipo ITextFrame, incluyendo la información de formato del texto. El código a continuación escanea el texto y los detalles de formato de una presentación, incluidas las diapositivas maestras.
Presentation presentation = new Presentation("demo.pptx");
try {
boolean includeMasterSlides = true;
ITextFrame[] textFrames = SlideUtil.getAllTextFrames(presentation, includeMasterSlides);
for (ITextFrame textFrame : textFrames) {
for (IParagraph paragraph : textFrame.getParagraphs()) {
for (IPortion portion : paragraph.getPortions()) {
String portionText = portion.getText();
System.out.println(portionText);
IPortionFormat portionFormat = portion.getPortionFormat();
float fontHeight = portionFormat.getFontHeight();
System.out.println(fontHeight);
IFontData latinFont = portionFormat.getLatinFont();
if (latinFont != null) {
String fontName = latinFont.getFontName();
System.out.println(fontName);
}
}
}
}
} finally {
presentation.dispose();
}
Extracción de texto categorizada y rápida
La clase PresentationFactory también ofrece métodos para extraer todo el texto de presentaciones:
IPresentationText getPresentationText(String file, int mode);
IPresentationText getPresentationText(InputStream stream, int mode);
IPresentationText getPresentationText(InputStream stream, int mode, ILoadOptions options);
El argumento enum TextExtractionArrangingMode indica el modo de organización del resultado de la extracción de texto y puede establecerse en los siguientes valores:
Unarranged- El texto sin procesar, sin tener en cuenta su posición en la diapositiva.Arranged- El texto está organizado en el mismo orden que aparece en la diapositiva.
El modo Unarranged puede usarse cuando la velocidad es crítica; es más rápido que el modo Arranged.
IPresentationText representa el texto bruto extraído de la presentación. Su método getSlidesText devuelve una matriz de objetos del tipo ISlideText. Cada objeto representa el texto de la diapositiva correspondiente. El objeto del tipo ISlideText dispone de los siguientes métodos:
getText- El texto dentro de las formas de la diapositiva.getMasterText- El texto dentro de las formas de la diapositiva maestra asociada a esta diapositiva.getLayoutText- El texto dentro de las formas de la diapositiva de diseño asociada a esta diapositiva.getNotesText- El texto dentro de las formas de la diapositiva de notas asociada a esta diapositiva.getCommentsText- El texto dentro de los comentarios asociados a esta diapositiva.
String presentationPath = "presentation.pptx";
int arrangingMode = TextExtractionArrangingMode.Unarranged;
IPresentationText presentationText = PresentationFactory.getInstance().getPresentationText(presentationPath, arrangingMode);
ISlideText firstSlideText = presentationText.getSlidesText()[0];
System.out.println(firstSlideText.getText());
System.out.println(firstSlideText.getLayoutText());
System.out.println(firstSlideText.getMasterText());
System.out.println(firstSlideText.getNotesText());
System.out.println(firstSlideText.getCommentsText());
FAQ
¿Qué velocidad tiene Aspose.Slides al procesar presentaciones grandes durante la extracción de texto?
Aspose.Slides está optimizado para un alto rendimiento y puede procesar incluso presentaciones grandes, lo que lo hace adecuado para escenarios de procesamiento en tiempo real o por lotes.
¿Puede Aspose.Slides extraer texto de tablas y gráficos dentro de las presentaciones?
Sí. Aspose.Slides puede extraer texto de muchos elementos de diapositivas, incluidas tablas y objetos relacionados con gráficos, para que puedas acceder y analizar el contenido textual en estructuras de presentación habituales.
¿Necesito una licencia especial de Aspose.Slides para extraer texto de presentaciones?
Puedes extraer texto utilizando la versión de prueba gratuita de Aspose.Slides, aunque tendrá ciertas limitaciones, como procesar solo un número limitado de diapositivas. Para un uso sin restricciones y para manejar presentaciones de mayor tamaño, se recomienda adquirir una licencia completa.