Estrazione avanzata di testo dalle presentazioni in .NET

Panoramica

L’estrazione del testo dalle presentazioni è un’attività comune ma essenziale per gli sviluppatori che lavorano con contenuti delle diapositive. Che tu stia gestendo file Microsoft PowerPoint in formato PPT o PPTX, o presentazioni OpenDocument (ODP), accedere e recuperare i dati testuali può essere fondamentale per analisi, automazione, indicizzazione o migrazione di contenuti.

Questo articolo fornisce una guida completa su come estrarre in modo efficiente il testo da vari formati di presentazione, inclusi PPT, PPTX e ODP, utilizzando Aspose.Slides per .NET. Imparerai come iterare sistematicamente gli elementi della presentazione per recuperare accuratamente il contenuto testuale di cui hai bisogno.

Estrai testo da una diapositiva

Aspose.Slides per .NET fornisce lo spazio dei nomi Aspose.Slides.Util che include la classe SlideUtil. Questa classe espone diversi metodi statici sovraccaricati per estrarre tutto il testo da una presentazione o da una diapositiva. Per estrarre il testo da una diapositiva in una presentazione, utilizza il metodo GetAllTextBoxes. Questo metodo accetta un oggetto di tipo IBaseSlide come parametro. Quando eseguito, il metodo scandisce l’intera diapositiva alla ricerca di testo e restituisce un array di oggetti di tipo ITextFrame, mantenendo qualsiasi formattazione del testo.

Il seguente frammento di codice estrae tutto il testo dalla prima diapositiva della presentazione:

int slideIndex = 0;

using var presentation = new Presentation("demo.pptx");

var slide = presentation.Slides[slideIndex];

var textFrames = Aspose.Slides.Util.SlideUtil.GetAllTextBoxes(slide);

foreach (var textFrame in textFrames)
{
    foreach (var paragraph in textFrame.Paragraphs)
    {
        foreach (var portion in paragraph.Portions)
        {
            var portionText = portion.Text;
            Console.WriteLine(portionText);

            var portionFormat = portion.PortionFormat;
            var fontHeight = portionFormat.FontHeight;
            Console.WriteLine(fontHeight);

            var latinFont = portionFormat.LatinFont;
            if (latinFont != null)
            {
                var fontName = latinFont.FontName;
                Console.WriteLine(fontName);
            }
        }
    }
}

Estrai testo da una presentazione

Per scansionare il testo dell’intera presentazione, usa il metodo statico GetAllTextFrames esposto dalla classe SlideUtil. Accetta due parametri:

  1. Primo, un oggetto IPresentation che rappresenta una presentazione PowerPoint o OpenDocument da cui verrà estratto il testo.
  2. Secondo, un valore Boolean che indica se le diapositive master devono essere incluse durante la scansione del testo nella presentazione.

Il metodo restituisce un array di oggetti di tipo ITextFrame, includendo le informazioni di formattazione del testo. Il codice sottostante scandisce il testo e i dettagli di formattazione da una presentazione, incluse le diapositive master.

using var presentation = new Presentation("demo.pptx");

var includeMasterSlides = true;
var textFrames = Aspose.Slides.Util.SlideUtil.GetAllTextFrames(presentation, includeMasterSlides);

foreach (var textFrame in textFrames)
{
    foreach (var paragraph in textFrame.Paragraphs)
    {
        foreach (var portion in paragraph.Portions)
        {
            var portionText = portion.Text;
            Console.WriteLine(portionText);

            var portionFormat = portion.PortionFormat;
            var fontHeight = portionFormat.FontHeight;
            Console.WriteLine(fontHeight);

            var latinFont = portionFormat.LatinFont;
            if (latinFont != null)
            {
                var fontName = latinFont.FontName;
                Console.WriteLine(fontName);
            }
        }
    }
}

Estrazione di testo categorizzata e veloce

La classe PresentationFactory fornisce anche metodi per estrarre tutto il testo dalle presentazioni:

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

L’argomento enum TextExtractionArrangingMode indica la modalità di organizzazione del risultato di estrazione del testo e può essere impostato sui seguenti valori:

  • Unarranged - Il testo grezzo senza considerare la sua posizione sulla diapositiva.
  • Arranged - Il testo è disposto nello stesso ordine della diapositiva.

La modalità Unarranged può essere usata quando la velocità è fondamentale; è più veloce della modalità Arranged.

IPresentationText rappresenta il testo grezzo estratto dalla presentazione. La sua proprietà SlidesText restituisce un array di oggetti di tipo ISlideText. Ogni oggetto rappresenta il testo sulla diapositiva corrispondente. L’oggetto di tipo ISlideText ha le seguenti proprietà:

  • Text - Il testo all’interno delle forme della diapositiva.
  • MasterText - Il testo all’interno delle forme della diapositiva master associate a questa diapositiva.
  • LayoutText - Il testo all’interno delle forme della diapositiva layout associate a questa diapositiva.
  • NotesText - Il testo all’interno delle forme della diapositiva note associate a questa diapositiva.
  • CommentsText - Il testo all’interno dei commenti associati a questa diapositiva.
var presentationPath = "presentation.ppt";
var arrangingMode = TextExtractionArrangingMode.Unarranged;
var presentationText = PresentationFactory.Instance.GetPresentationText(presentationPath, arrangingMode);
var firstSlideText = presentationText.SlidesText[0];

Console.WriteLine(firstSlideText.Text);
Console.WriteLine(firstSlideText.LayoutText);
Console.WriteLine(firstSlideText.MasterText);
Console.WriteLine(firstSlideText.NotesText);
Console.WriteLine(firstSlideText.CommentsText);

FAQ

Quanto velocemente Aspose.Slides elabora grandi presentazioni durante l’estrazione del testo?

Aspose.Slides è ottimizzato per alte prestazioni e può elaborare anche grandi presentazioni, rendendolo adatto a scenari di elaborazione in tempo reale o in batch.

Aspose.Slides può estrarre testo da tabelle e grafici all’interno delle presentazioni?

Sì. Aspose.Slides può estrarre testo da molti elementi della diapositiva, incluse tabelle e oggetti correlati a grafici, così da poter accedere e analizzare il contenuto testuale nelle strutture di presentazione comuni.

È necessaria una licenza speciale di Aspose.Slides per estrarre testo dalle presentazioni?

Puoi estrarre testo utilizzando la versione di prova gratuita di Aspose.Slides, anche se avrà alcune limitazioni, come la possibilità di elaborare solo un numero limitato di diapositive. Per un utilizzo senza restrizioni e per gestire presentazioni più grandi, si consiglia di acquistare una licenza completa.