Text aus Präsentation extrahieren

Text aus Folie extrahieren

Aspose.Slides für Java stellt die SlideUtil Klasse bereit. Diese Klasse bietet eine Reihe von überladenen statischen Methoden zum Extrahieren des gesamten Textes aus einer Präsentation oder Folie. Um den Text aus einer Folie in einer PPTX-Präsentation zu extrahieren, verwenden Sie die überladene statische Methode getAllTextBoxes der SlideUtil Klasse. Diese Methode akzeptiert das Slide-Objekt als Parameter. Bei der Ausführung scannt die Methode Slide den gesamten Text von der als Parameter übergebenen Folie und gibt ein Array von TextFrame Objekten zurück. Das bedeutet, dass alle Textformatierungen, die mit dem Text verbunden sind, verfügbar sind. Der folgende Code extrahiert den gesamten Text von der ersten Folie der Präsentation:

//Instatiate Presentation class that represents a PPTX file
Presentation pres = new Presentation("demo.pptx");
try {
    for (ISlide slide : pres.getSlides()) 
    {
        //Get an Array of ITextFrame objects from all slides in the PPTX
        ITextFrame[] textFramesPPTX = SlideUtil.getAllTextBoxes(slide);

        //Loop through the Array of TextFrames
        for (int i = 0; i < textFramesPPTX.length; i++) {
            //Loop through paragraphs in current ITextFrame
            for (IParagraph para : textFramesPPTX[i].getParagraphs()) {
                //Loop through portions in the current IParagraph
                for (IPortion port : para.getPortions()) {
                    //Display text in the current portion
                    System.out.println(port.getText());

                    //Display font height of the text
                    System.out.println(port.getPortionFormat().getFontHeight());

                    //Display font name of the text
                    if (port.getPortionFormat().getLatinFont() != null)
                        System.out.println(port.getPortionFormat().getLatinFont().getFontName());
                }
            }
        }
    }
} finally {
    pres.dispose();
}

Text aus Präsentation extrahieren

Um den Text aus der gesamten Präsentation zu scannen, verwenden Sie die getAllTextFrames statische Methode der SlideUtil-Klasse. Sie benötigt zwei Parameter:

  1. Erstens ein Presentation Objekt, das die Präsentation darstellt, aus der der Text extrahiert wird.
  2. Zweitens ein boolescher Wert, der bestimmt, ob die Master-Folie beim Scannen des Textes aus der Präsentation einbezogen werden soll. Die Methode gibt ein Array von TextFrame Objekten zurück, die vollständige Informationen zur Textformatierung enthalten. Der folgende Code scannt den Text und die Formatierungsinformationen aus einer Präsentation, einschließlich der Master-Folien.
//Instatiate Presentation class that represents a PPTX file
Presentation pres = new Presentation("demo.pptx");
try {
    //Get an Array of ITextFrame objects from all slides in the PPTX
    ITextFrame[] textFramesPPTX = SlideUtil.getAllTextFrames(pres, true);

    //Loop through the Array of TextFrames
    for (int i = 0; i < textFramesPPTX.length; i++) 
    {
        //Loop through paragraphs in current ITextFrame
        for (IParagraph para : textFramesPPTX[i].getParagraphs())
        {
            //Loop through portions in the current IParagraph
            for (IPortion port : para.getPortions())
            {
                //Display text in the current portion
                System.out.println(port.getText());

                //Display font height of the text
                System.out.println(port.getPortionFormat().getFontHeight());

                //Display font name of the text
                if (port.getPortionFormat().getLatinFont() != null)
                    System.out.println(port.getPortionFormat().getLatinFont().getFontName());
            }
        }
    }
} finally {
    pres.dispose();
}

Kategorisierte und schnelle Textextraktion

Die neue statische Methode getPresentationText wurde zur Präsentationsklasse hinzugefügt. Es gibt drei Überladungen für diese Methode:

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

Das TextExtractionArrangingMode Enum-Argument gibt den Modus an, um die Ausgabe des Textergebnisses zu organisieren und kann auf folgende Werte gesetzt werden:

  • Unarranged - Der roher Text ohne Berücksichtigung der Position auf der Folie
  • Arranged - Der Text ist in der gleichen Reihenfolge positioniert wie auf der Folie

Unarranged-Modus kann verwendet werden, wenn Geschwindigkeit entscheidend ist, da er schneller ist als der Arranged-Modus.

IPresentationText repräsentiert den rohen Text, der aus der Präsentation extrahiert wurde. Es enthält eine getSlidesText Methode, die ein Array von ISlideText Objekten zurückgibt. Jedes Objekt repräsentiert den Text auf der entsprechenden Folie. ISlideText Objekte haben die folgenden Methoden:

Es gibt auch eine SlideText Klasse, die das ISlideText Interface implementiert.

Die neue API kann folgendermaßen verwendet werden:

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