Cómo extraer texto de archivos PPT, PPTX y ODP usando Open XML SDK en .NET
Open XML SDK
El Open XML SDK ofrece un método altamente estructurado y eficiente para extraer texto de archivos de presentación —especialmente PPTX, que sigue el estándar Open XML. Al proporcionar acceso directo al XML subyacente, este SDK permite un manejo más rápido y flexible del contenido de las diapositivas en comparación con los métodos tradicionales.
Acceso Directo al XML
- Analizar Texto Directamente: El Open XML SDK le permite extraer texto de las partes XML sin renderizar las diapositivas.
- Elementos Estructurados: Como el texto se almacena en etiquetas XML bien definidas, es más sencillo recuperarlo y procesarlo.
Ejemplo: Extrayendo Texto Directamente del Contenido XML de una Diapositiva
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);
}
}
}
Ventajas de Rendimiento
- Extracción Más Rápida: Elimina la sobrecarga de abrir PowerPoint u otras API de alto nivel.
- Menor Uso de Memoria: Sólo se acceden a las partes XML relevantes, reduciendo el consumo de recursos.
- No Se Necesita Microsoft PowerPoint: Lo libera de requisitos de instalación adicionales.
Ejemplo: Extrayendo Texto de Forma Eficiente Sin Cargar Toda la Presentación
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));
}
}
Identificación de Elementos de Texto
Detalles de la Extracción de Texto de Presentaciones
Al extraer texto de presentaciones, considere los siguientes factores:
- El Texto Puede Residir en Diferentes Secciones: Diapositivas normales, diapositivas maestras, diseños o notas del orador.
- Marcadores de Posición Predeterminados: Las diapositivas maestras y los diseños pueden incluir marcadores (por ejemplo, “Haga clic para editar el estilo del título maestro”) que no son contenido real de la presentación.
- Filtrar Texto Vacío u Oculto: Algunos elementos pueden estar vacíos o no estar destinados a mostrarse.
Etiquetas que Contienen Texto
En un archivo PPTX, el texto se almacena generalmente en:
- Elementos
<a:t>dentro de<a:p>(párrafos) - Elementos
<a:r>(segmentos de texto dentro de los párrafos)
Ejemplo: Extrayendo Todos los Elementos de Texto de una Diapositiva
var textElements = slidePart.Slide.Descendants<DocumentFormat.OpenXml.Drawing.Text>();
foreach (var text in textElements)
{
Console.WriteLine(text.Text);
}
ODP y PPT
Imposibilidad de Extraer Texto Directamente
- A diferencia de PPTX, PPT (formato binario) y ODP (OpenDocument Presentation) no son compatibles con Open XML SDK.
- PPT almacena el contenido en un formato binario cerrado, lo que complica la extracción de texto.
- ODP se basa en OpenDocument XML, que difiere estructuralmente de PPTX.
Solución Alternativa: Convertir a PPTX
Para extraer texto de PPT o ODP, el enfoque recomendado es:
- Convertir PPT → PPTX usando PowerPoint o una herramienta de terceros.
- Convertir ODP → PPTX mediante LibreOffice o PowerPoint.
- Extraer texto del nuevo PPTX usando Open XML SDK.
Ejemplo: Convertir ODP a PPTX mediante la línea de comandos de LibreOffice
soffice --headless --convert-to pptx presentation.odp
Plataformas y Frameworks Compatibles
- Windows: .NET Framework 4.6.1 y superiores, .NET Core 2.1+, .NET 5/6/7.
- Linux/macOS: .NET Core 2.1+, .NET 5/6/7.
- Entornos en la Nube: Microsoft Azure Functions, AWS Lambda (.NET Core), contenedores Docker.
- Compatibilidad con Aplicaciones de Office: No se requiere instalación de Microsoft Office.
- Lenguajes de Programación Compatibles: Open XML SDK puede usarse con C#, VB.NET, F# y otros lenguajes compatibles con .NET.
Conclusión
Aprovechar el Open XML SDK para la extracción de texto de PPTX brinda tanto eficiencia como claridad, mientras que PPT y ODP exigen un paso de conversión inicial para un procesamiento fluido. Adoptar este enfoque garantiza alto rendimiento, flexibilidad y amplia compatibilidad con aplicaciones modernas de .NET.