Extracción avanzada de texto de presentaciones en Android

Extraer texto de una diapositiva

Aspose.Slides for Android via Java proporciona la clase SlideUtil. Esta clase expone una serie de métodos estáticos sobrecargados para extraer todo el texto de una presentación o diapositiva. Para extraer el texto de una diapositiva en una presentación PPTX, utilice el método estático sobrecargado getAllTextBoxes expuesto por la clase SlideUtil. Este método acepta el objeto Slide como parámetro. Al ejecutarse, el método Slide escanea todo el texto de la diapositiva pasada como parámetro y devuelve una matriz de objetos TextFrame. Esto significa que cualquier formato de texto asociado está disponible. El siguiente fragmento de código extrae todo el texto de la primera diapositiva de la presentación:

//Instancia la clase Presentation que representa un archivo PPTX
Presentation pres = new Presentation("demo.pptx");
try {
    for (ISlide slide : pres.getSlides()) 
    {
        //Obtén una matriz de objetos ITextFrame de todas las diapositivas del PPTX
        ITextFrame[] textFramesPPTX = SlideUtil.getAllTextBoxes(slide);

        //Recorre la matriz de TextFrames
        for (int i = 0; i < textFramesPPTX.length; i++) {
            //Recorre los párrafos del ITextFrame actual
            for (IParagraph para : textFramesPPTX[i].getParagraphs()) {
                //Recorre las porciones del IParagraph actual
                for (IPortion port : para.getPortions()) {
                    //Muestra el texto de la porción actual
                    System.out.println(port.getText());

                    //Muestra la altura de la fuente del texto
                    System.out.println(port.getPortionFormat().getFontHeight());

                    //Muestra el nombre de la fuente del texto
                    if (port.getPortionFormat().getLatinFont() != null)
                        System.out.println(port.getPortionFormat().getLatinFont().getFontName());
                }
            }
        }
    }
} finally {
    pres.dispose();
}

Extraer texto de una presentación

Para escanear el texto de toda la presentación, utilice el método estático getAllTextFrames expuesto por la clase SlideUtil. Toma dos parámetros:

  1. Primero, un objeto Presentation que representa la presentación de la que se extrae el texto.
  2. Segundo, un valor booleano que determina si la diapositiva maestra debe incluirse al escanear el texto de la presentación. El método devuelve una matriz de objetos TextFrame con información de formato de texto. El código a continuación escanea el texto y la información de formato de una presentación, incluidas las diapositivas maestras.
//Instancia la clase Presentation que representa un archivo PPTX
Presentation pres = new Presentation("demo.pptx");
try {
    //Obtén una matriz de objetos ITextFrame de todas las diapositivas del PPTX
    ITextFrame[] textFramesPPTX = SlideUtil.getAllTextFrames(pres, true);

    //Recorre la matriz de TextFrames
    for (int i = 0; i < textFramesPPTX.length; i++) 
    {
        //Recorre los párrafos del ITextFrame actual
        for (IParagraph para : textFramesPPTX[i].getParagraphs())
        {
            //Recorre las porciones del IParagraph actual
            for (IPortion port : para.getPortions())
            {
                //Muestra el texto de la porción actual
                System.out.println(port.getText());

                //Muestra la altura de la fuente del texto
                System.out.println(port.getPortionFormat().getFontHeight());

                //Muestra el nombre de la fuente del texto
                if (port.getPortionFormat().getLatinFont() != null)
                    System.out.println(port.getPortionFormat().getLatinFont().getFontName());
            }
        }
    }
} finally {
    pres.dispose();
}

Extracción de texto categorizada y rápida

Se ha añadido el nuevo método estático getPresentationText a la clase Presentation. Hay tres sobrecargas para este método:

public IPresentationText getPresentationText(String file, int mode);
public IPresentationText getPresentationText(InputStream stream, int mode);
public IPresentationText getPresentationText(InputStream stream, int mode, ILoadOptions options);

The TextExtractionArrangingMode enum argument indicates the mode to organize the output of text result and can be set to the following values:

  • Unarranged - The raw text with no respect to position on the slide
  • Arranged - The text is positioned in the same order as on the slide

Unarranged mode can be used when speed is critical, it’s faster than Arranged mode.

IPresentationText represents the raw text extracted from the presentation. It contains a getSlidesText method which returns an array of ISlideText objects. Every object represent the text on the corresponding slide. ISlideText object have the following methods:

The new API can be used like this:

IPresentationText text1 = PresentationFactory.getInstance().getPresentationText("presentation.pptx", TextExtractionArrangingMode.Unarranged);
System.out.println(text1.getSlidesText()[0].getText());
System.out.println(text1.getSlidesText()[0].getLayoutText());
System.out.println(text1.getSlidesText()[0].getMasterText());
System.out.println(text1.getSlidesText()[0].getNotesText());

FAQ

¿Qué tan rápido procesa Aspose.Slides presentaciones grandes durante la extracción de texto?

Aspose.Slides está optimizado para alto rendimiento y procesa de forma eficiente 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 presentaciones?

Sí, Aspose.Slides admite completamente la extracción de texto de tablas, gráficos y otros elementos complejos de la diapositiva, lo que permite acceder y analizar todo el contenido textual fácilmente.

¿Necesito una licencia especial de Aspose.Slides para extraer texto de presentaciones?

Puede extraer texto usando 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 más grandes, se recomienda adquirir una licencia completa.