Extrahieren von Text aus der Präsentation

Text aus einer Folie extrahieren

Aspose.Slides für C++ bietet den Namespace Aspose.Slides.Util, der die Klasse PresentationScanner enthält. Diese Klasse stellt eine Reihe überladener statischer Methoden zur Verfügung, um den gesamten Text aus einer Präsentation oder Folie zu extrahieren. Um den Text aus einer Folie in einer PPTX-Präsentation zu extrahieren, verwenden Sie die überladene statische Methode GetAllTextBoxes, die von der Klasse PresentationScanner bereitgestellt wird. Diese Methode akzeptiert das Slide-Objekt als Parameter. Bei der Ausführung scannt die Slide-Methode den gesamten Text der als Parameter übergebenen Folie und gibt ein Array von TextFrame-Objekten zurück. Das bedeutet, dass alle mit dem Text verbundenen Textformatierungen verfügbar sind. Der folgende Code extrahiert den gesamten Text auf der ersten Folie der Präsentation:

C#


 //Instantiieren Sie die Präsentationsklasse, die eine PPTX-Datei darstellt

Presentation pptxPresentation = new Presentation(path + "demo.pptx");


//Ein Array von TextFrameEx-Objekten von der ersten Folie erhalten

ITextFrame[] textFramesSlideOne = SlideUtil.GetAllTextBoxes(pptxPresentation.Slides[0]);

//Durch das Array von TextFrames iterieren

for (int i = 0; i < textFramesSlideOne.Length; i++)

    //Durch die Absätze im aktuellen TextFrame iterieren

    foreach (Paragraph para in textFramesSlideOne[i].Paragraphs)

        //Durch die Abschnitte im aktuellen Absatz iterieren

        foreach (Portion port in para.Portions)

        {

            //Text im aktuellen Abschnitt anzeigen

            Console.WriteLine(port.Text);

            //Schriftgröße des Textes anzeigen

            Console.WriteLine(port.PortionFormat.FontHeight);

            //Schriftart des Textes anzeigen

            Console.WriteLine(port.PortionFormat.LatinFont.FontName);

        }

Text aus der gesamten Präsentation extrahieren

Um den Text aus der gesamten Präsentation zu scannen, verwenden Sie die statische Methode GetAllTextFrames, die von der Klasse PresentationScanner bereitgestellt wird. Sie nimmt zwei Parameter entgegen:

  1. Zuerst ein Präsentationsobjekt, das die PPTX-Präsentation darstellt, aus der der Text extrahiert wird.
  2. Zweitens ein boolescher Wert, der bestimmt, ob die Masterfolie einbezogen werden soll, wenn der Text aus der Präsentation gescannt wird. Die Methode gibt ein Array von TextFrame-Objekten zurück, das vollständige Informationen zur Textformatierung enthält. Der folgende Code scannt den Text und die Formatierungsinformationen aus einer Präsentation, einschließlich der Masterfolien.

C#


 //Instantiieren Sie die Präsentationsklasse, die eine PPTX-Datei darstellt

Presentation pptxPresentation = new Presentation(path + "demo.pptx");

//Ein Array von ITextFrame-Objekten von allen Folien in der PPTX erhalten

ITextFrame[] textFramesPPTX = Aspose.Slides.Util.SlideUtil.GetAllTextFrames(pptxPresentation, true);

//Durch das Array von TextFrames iterieren

for (int i = 0; i < textFramesPPTX.Length; i++)

    //Durch die Absätze im aktuellen ITextFrame iterieren

    foreach (IParagraph para in textFramesPPTX[i].Paragraphs)

        //Durch die Abschnitte im aktuellen IParagraph iterieren

        foreach (IPortion port in para.Portions)

        {

            //Text im aktuellen Abschnitt anzeigen

            Console.WriteLine(port.Text);

            //Schriftgröße des Textes anzeigen

            Console.WriteLine(port.PortionFormat.FontHeight);

            //Schriftart des Textes anzeigen

            if (port.PortionFormat.LatinFont != null)

                Console.WriteLine(port.PortionFormat.LatinFont.FontName);

        }

Kategorisierte und schnelle Textextraktion

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


 PresentationText GetPresentationText(Stream stream)

PresentationText GetPresentationText(Stream stream, ExtractionMode mode)

Das Enum-Argument ExtractionMode gibt den Modus an, um das Ergebnis der Textextraktion zu organisieren und kann auf die folgenden Werte gesetzt werden: Unarranged - Der rohe Text ohne Berücksichtigung der Position auf der Folie Arranged - Der Text ist in der gleichen Reihenfolge positioniert wie auf der Folie

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

PresentationText repräsentiert den rohen Text, der aus der Präsentation extrahiert wurde. Es enthält eine SlidesText-Eigenschaft aus dem Aspose.Slides.Util-Namespace, die ein Array von ISlideText-Objekten zurückgibt. Jedes Objekt repräsentiert den Text auf der entsprechenden Folie. Das ISlideText-Objekt hat die folgenden Eigenschaften:

ISlideText.Text - Der Text auf den Formen der Folie ISlideText.MasterText - Der Text auf den Formen der Masterseite für diese Folie ISlideText.LayoutText - Der Text auf den Formen der Layoutseite für diese Folie ISlideText.NotesText - Der Text auf den Formen der Notizenseite für diese Folie

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

Die neue API kann folgendermaßen verwendet werden:


 PresentationText text1 = Presentation.GetPresentationText("presentation.ppt");

Console.WriteLine(text1.SlidesText[0].Text);

Console.WriteLine(text1.SlidesText[0].LayoutText);

Console.WriteLine(text1.SlidesText[0].MasterText);

Console.WriteLine(text1.SlidesText[0].NotesText);

PresentationText text2 = Presentation.GetPresentationText("presentation.pptx", ExtractionMode.Unarranged);