Fortgeschrittene Textextraktion aus Präsentationen in .NET

Übersicht

Das Extrahieren von Text aus Präsentationen ist eine häufige, aber dennoch wesentliche Aufgabe für Entwickler, die mit Folieninhalten arbeiten. Egal, ob Sie mit Microsoft PowerPoint‑Dateien im PPT‑ oder PPTX‑Format oder mit OpenDocument‑Präsentationen (ODP) zu tun haben, der Zugriff auf und das Abrufen von Textdaten kann für Analysen, Automatisierung, Indexierung oder Inhaltsmigration entscheidend sein.

Dieser Artikel bietet eine umfassende Anleitung, wie Sie Text effizient aus verschiedenen Präsentationsformaten, einschließlich PPT, PPTX und ODP, mit Aspose.Slides für .NET extrahieren können. Sie lernen, wie Sie systematisch durch Präsentationselemente iterieren, um den benötigten Textinhalt exakt zu erhalten.

Text aus einer Folie extrahieren

Aspose.Slides für .NET stellt den Namespace Aspose.Slides.Util bereit, der die Klasse SlideUtil enthält. Diese Klasse bietet mehrere überladene statische Methoden zum Extrahieren von Text aus einer Präsentation oder Folie. Um Text aus einer Folie einer Präsentation zu extrahieren, verwenden Sie die Methode GetAllTextBoxes. Diese Methode nimmt ein Objekt vom Typ ISlide als Parameter entgegen. Bei Ausführung scannt die Methode die gesamte Folie nach Text und gibt ein Array von Objekten des Typs ITextFrame zurück, wobei sämtliche Textformatierungen erhalten bleiben.

Der folgende Codeausschnitt extrahiert den gesamten Text aus der ersten Folie der Präsentation:

int slideIndex = 0;

// Instanziieren Sie die Presentation-Klasse, die eine Präsentationsdatei (PPT, PPTX, ODP usw.) darstellt.
using Presentation presentation = new Presentation("demo.pptx");

// Holen Sie eine Referenz zur Folie.
ISlide slide = presentation.Slides[slideIndex];

// Holen Sie ein Array von Text-Frames von der Folie.
ITextFrame[] textFrames = Aspose.Slides.Util.SlideUtil.GetAllTextBoxes(slide);

// Durchlaufen Sie das Array der Text-Frames.
for (int i = 0; i < textFrames.Length; i++)
{
    // Durchlaufen Sie die Absätze im aktuellen Text-Frame.
    foreach (IParagraph paragraph in textFrames[i].Paragraphs)
    {
        // Durchlaufen Sie die Textteile im aktuellen Absatz.
        foreach (IPortion portion in paragraph.Portions)
        {
            // Geben Sie den Text im aktuellen Textteil aus.
            Console.WriteLine(portion.Text);

            // Geben Sie die Schriftgröße des Textes aus.
            Console.WriteLine(portion.PortionFormat.FontHeight);

            // Geben Sie den Schriftartnamen des Textes aus.
            if (portion.PortionFormat.LatinFont != null)
                Console.WriteLine(portion.PortionFormat.LatinFont.FontName);
        }
    }
}

Text aus einer Präsentation extrahieren

Um Text aus der gesamten Präsentation zu scannen, verwenden Sie die statische Methode GetAllTextFrames der Klasse SlideUtil. Sie akzeptiert zwei Parameter:

  1. Zunächst ein Presentation-Objekt, das eine PowerPoint‑ oder OpenDocument‑Präsentation darstellt, aus der Text extrahiert werden soll.
  2. Zweitens ein Boolean‑Wert, der angibt, ob die Master‑Folien beim Scannen des Textes aus der Präsentation einbezogen werden sollen.

Die Methode gibt ein Array von Objekten des Typs ITextFrame zurück, einschließlich Informationen zur Textformatierung. Der nachstehende Code scannt den Text und die Formatierungsdetails einer Präsentation, einschließlich der Master‑Folien.

// Instanziieren Sie die Presentation-Klasse, die eine Präsentationsdatei (PPT, PPTX, ODP usw.) darstellt.
using Presentation presentation = new Presentation("demo.pptx");

// Holen Sie ein Array von Text-Frames aus allen Folien in der Präsentation.
ITextFrame[] textFrames = Aspose.Slides.Util.SlideUtil.GetAllTextFrames(presentation, true);

// Durchlaufen Sie das Array der Text-Frames.
for (int i = 0; i < textFrames.Length; i++)
{
    // Durchlaufen Sie die Absätze im aktuellen Text-Frame.
    foreach (IParagraph paragraph in textFrames[i].Paragraphs)
    {
        // Durchlaufen Sie die Textteile im aktuellen Absatz.
        foreach (IPortion portion in paragraph.Portions)
        {
            // Geben Sie den Text im aktuellen Textteil aus.
            Console.WriteLine(portion.Text);

            // Geben Sie die Schriftgröße des Textes aus.
            Console.WriteLine(portion.PortionFormat.FontHeight);

            // Geben Sie den Schriftartnamen des Textes aus.
            if (portion.PortionFormat.LatinFont != null)
                Console.WriteLine(portion.PortionFormat.LatinFont.FontName);
        }
    }
}

Kategorisierte und schnelle Textextraktion

Die Klasse PresentationFactory bietet ebenfalls statische Methoden zum Extrahieren des gesamten Textes aus Präsentationen:

IPresentationText GetPresentationText(string file, TextExtractionArrangingMode mode);
IPresentationText GetPresentationText(Stream stream, TextExtractionArrangingMode mode);
IPresentationText GetPresentationText(Stream stream, TextExtractionArrangingMode mode, ILoadOptions options);

Das Aufzählungsargument TextExtractionArrangingMode gibt den Modus für die Anordnung des Textextraktionsergebnisses an und kann auf die folgenden Werte gesetzt werden:

  • Unarranged – Der Rohtext ohne Rücksicht auf seine Position auf der Folie.
  • Arranged – Der Text wird in derselben Reihenfolge angeordnet wie auf der Folie.

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

IPresentationText repräsentiert den aus der Präsentation extrahierten Rohtext. Es enthält die Eigenschaft SlidesText aus dem Namespace Aspose.Slides.Util, die ein Array von Objekten des Typs ISlideText zurückgibt. Jedes Objekt stellt den Text der entsprechenden Folie dar. Das Objekt vom Typ ISlideText verfügt über die folgenden Eigenschaften:

  • Text – Der Text in den Formen der Folie.
  • MasterText – Der Text in den Formen der Master‑Folie, die mit dieser Folie verknüpft ist.
  • LayoutText – Der Text in den Formen der Layout‑Folie, die mit dieser Folie verknüpft ist.
  • NotesText – Der Text in den Formen der Notizfolie, die mit dieser Folie verknüpft ist.
  • CommentsText – Der Text in den Kommentaren, die zu dieser Folie gehören.
IPresentationText text = new PresentationFactory().GetPresentationText("presentation.ppt", TextExtractionArrangingMode.Unarranged);
Console.WriteLine(text.SlidesText[0].Text);
Console.WriteLine(text.SlidesText[0].LayoutText);
Console.WriteLine(text.SlidesText[0].MasterText);
Console.WriteLine(text.SlidesText[0].NotesText);
Console.WriteLine(text.SlidesText[0].CommentsText);

FAQ

Wie schnell verarbeitet Aspose.Slides große Präsentationen bei der Textextraktion?

Aspose.Slides ist für hohe Leistung optimiert und verarbeitet selbst große Präsentationen effizient, wodurch es sich für Echtzeit‑ oder Massenverarbeitungs‑Szenarien eignet.

Kann Aspose.Slides Text aus Tabellen und Diagrammen innerhalb von Präsentationen extrahieren?

Ja, Aspose.Slides unterstützt das vollständige Extrahieren von Text aus Tabellen, Diagrammen und anderen komplexen Folienelementen, sodass Sie sämtlichen Textinhalt leicht zugänglich machen und analysieren können.

Benötige ich eine spezielle Aspose.Slides‑Lizenz, um Text aus Präsentationen zu extrahieren?

Sie können Text mit der kostenlosen Testversion von Aspose.Slides extrahieren, wobei jedoch bestimmte Einschränkungen gelten, z. B. die Verarbeitung nur einer begrenzten Anzahl von Folien. Für uneingeschränkte Nutzung und die Bearbeitung größerer Präsentationen wird der Kauf einer Voll‑Lizenz empfohlen.