Come estrarre testo da file PPT, PPTX e ODP usando Open XML SDK in .NET
Panoramica
Questo articolo spiega come estrarre testo da file di presentazione utilizzando l’Open XML SDK in .NET. Si concentra sull’accesso diretto a XML per file PPTX, dove il testo può essere recuperato da elementi di slide strutturati senza rendere le slide o richiedere Microsoft PowerPoint. L’articolo descrive inoltre i vantaggi di prestazione, come un’elaborazione più rapida e un minore utilizzo di memoria.
Per i file PPT e ODP, l’articolo spiega che il testo non può essere estratto direttamente con l’Open XML SDK. È necessario prima convertire questi formati in PPTX, dopodiché il testo può essere estratto dal file risultante.
Open XML SDK
L'Open XML SDK fornisce un metodo altamente strutturato ed efficiente per estrarre testo da file di presentazione—soprattutto PPTX, che segue lo standard Open XML. Offrendo accesso diretto all’XML sottostante, questo SDK consente una gestione più veloce e flessibile del contenuto delle slide rispetto ai metodi tradizionali.
Accesso XML diretto
- Analizza il testo direttamente: l’Open XML SDK consente di estrarre testo dalle parti XML senza rendere le slide.
- Elementi strutturati: poiché il testo è memorizzato in tag XML ben definiti, è più semplice recuperarlo e processarlo.
Esempio: estrarre testo direttamente dal contenuto XML di una slide
using (PresentationDocument presentation = PresentationDocument.Open("presentation.pptx", false))
{
var slidePart = presentation.PresentationPart.SlideParts.FirstOrDefault();
if (slidePart != null)
{
var textElements = slidePart.Slide.Descendants<DocumentFormat.OpenXml.Drawing.Text>();
foreach (var text in textElements)
{
Console.WriteLine(text.Text);
}
}
}
Vantaggi delle prestazioni
- Estrazione più veloce: evita il sovraccarico di apertura di PowerPoint o di altre API di alto livello.
- Minor utilizzo di memoria: vengono accedute solo le parti XML rilevanti, riducendo il consumo di risorse.
- Nessun Microsoft PowerPoint necessario: elimina la necessità di installazioni aggiuntive.
Esempio: estrarre testo in modo efficiente senza caricare l’intera presentazione
using (PresentationDocument presentation = PresentationDocument.Open("presentation.pptx", false))
{
foreach (var slidePart in presentation.PresentationPart.SlideParts)
{
var texts = slidePart.Slide.Descendants<DocumentFormat.OpenXml.Drawing.Text>().Select(t => t.Text);
Console.WriteLine(string.Join(" ", texts));
}
}
Identificazione degli elementi di testo
Specifiche per l’estrazione del testo dalle presentazioni
Quando si estrae testo dalle presentazioni, considerare questi fattori:
- Il testo può trovarsi in diverse sezioni: slide normali, slide master, layout o note del relatore.
- Segnaposti predefiniti: slide master e layout possono includere segnaposti (ad es., “Fai clic per modificare lo stile del titolo master”) che non sono contenuti reali della presentazione.
- Filtrare testo vuoto o nascosto: alcuni elementi potrebbero essere vuoti o non destinati alla visualizzazione.
Tag contenenti testo
In un file PPTX, il testo è generalmente memorizzato in:
- elementi
<a:t>all’interno di<a:p>(paragrafi) - elementi
<a:r>(segmenti di testo all’interno dei paragrafi)
Esempio: estrarre tutti gli elementi di testo da una slide
var textElements = slidePart.Slide.Descendants<DocumentFormat.OpenXml.Drawing.Text>();
foreach (var text in textElements)
{
Console.WriteLine(text.Text);
}
ODP e PPT
Impossibilità di estrarre il testo direttamente
- A differenza di PPTX, PPT (formato binario) e ODP (OpenDocument Presentation) non sono supportati da Open XML SDK.
- PPT conserva il contenuto in un formato binario chiuso, rendendo complessa l’estrazione del testo.
- ODP si basa su OpenDocument XML, che differisce strutturalmente da PPTX.
Soluzione alternativa: conversione in PPTX
Per estrarre testo da PPT o ODP, l’approccio consigliato è:
- Convertire PPT → PPTX usando PowerPoint o uno strumento di terze parti.
- Convertire ODP → PPTX tramite LibreOffice o PowerPoint.
- Estrarre il testo dal nuovo PPTX usando Open XML SDK.
Esempio: conversione di ODP in PPTX tramite riga di comando di LibreOffice
soffice --headless --convert-to pptx presentation.odp
Piattaforme e framework supportati
- Windows: .NET Framework 4.6.1 e versioni successive, .NET Core 2.1+, .NET 5/6/7.
- Linux/macOS: .NET Core 2.1+, .NET 5/6/7.
- Ambienti cloud: Microsoft Azure Functions, AWS Lambda (.NET Core), container Docker.
- Compatibilità con le applicazioni Office: non è necessaria l’installazione di Microsoft Office.
- Linguaggi di programmazione supportati: Open XML SDK può essere usato con C#, VB.NET, F# e altri linguaggi supportati da .NET.
Conclusione
Sfruttare l'Open XML SDK per l'estrazione di testo da PPTX offre sia efficienza sia chiarezza, mentre PPT e ODP richiedono un passaggio di conversione iniziale per una gestione fluida. Adottare questo approccio garantisce alte prestazioni, flessibilità e ampia compatibilità con le applicazioni .NET moderne.