Formato PPTX: Dentro de la presentación Open XML de Microsoft PowerPoint
PPTX (PowerPoint Open XML Presentation) es el formato de presentación de Microsoft introducido con Office 2007, reemplazando al formato binario PPT. Como DOCX y XLSX, PPTX es un archivo ZIP que contiene ficheros XML conformes al estándar Office Open XML (OOXML).
Estructura interna de PPTX
presentacion.pptx/
├── [Content_Types].xml
├── _rels/.rels
├── ppt/
│ ├── presentation.xml — estructura maestra de la presentación
│ ├── theme/theme1.xml — tema de color, fuentes, efectos
│ ├── slides/
│ │ ├── slide1.xml — contenido de la Diapositiva 1
│ │ └── slide2.xml — contenido de la Diapositiva 2
│ ├── slideLayouts/ — diseños de diapositiva (Título, Contenido, etc.)
│ ├── slideMasters/ — diapositiva maestra (diseño global)
│ ├── notesSlides/ — notas del presentador
│ └── media/ — ficheros multimedia incrustados
└── docProps/
├── app.xml — contador de diapositivas, empresa
└── core.xml — título, autor, fechas de creación/modificación
El modelo de herencia Patrón de diapositivas / Diseño / Diapositiva
PPTX usa un modelo de herencia de tres niveles para el diseño de diapositivas:
Patrón de diapositivas (slideMaster1.xml)
└── Diseño de diapositiva (slideLayout1.xml, slideLayout2.xml, ...)
└── Diapositiva individual (slide1.xml, slide2.xml, ...)
Patrón de diapositivas: Define el diseño base — fondo, esquema de color, tamaños de fuente predeterminados y posiciones de marcador de posición para toda la presentación. Los cambios aquí se propagan a todas las diapositivas.
Diseño de diapositiva: Refina el patrón para un tipo de diseño específico (Diapositiva de título, Título y contenido, Dos contenidos, Comparación, etc.). Cada diseño hereda del patrón pero puede anular fondo y disposiciones de marcador de posición.
Diapositiva individual: Contiene contenido real. Hereda el diseño de su diseño asignado. Solo necesita especificar valores que difieran de la cadena de herencia diseño/patrón.
Generación programática de PPTX
Python — python-pptx
from pptx import Presentation
from pptx.util import Inches, Pt
from pptx.dml.color import RGBColor
# Crear presentación (16:9)
prs = Presentation()
prs.slide_width = Inches(13.33)
prs.slide_height = Inches(7.5)
# Obtener diseño de diapositiva (Título y contenido)
diseno_diapositiva = prs.slide_layouts[1]
diapositiva = prs.slides.add_slide(diseno_diapositiva)
# Acceder a marcadores de posición
titulo = diapositiva.placeholders[0]
contenido = diapositiva.placeholders[1]
titulo.text = "Resultados Q4 2024"
# Añadir texto con formato al contenido
tf = contenido.text_frame
tf.text = "Los ingresos aumentaron un 32%"
tf.paragraphs[0].font.size = Pt(24)
tf.paragraphs[0].font.bold = True
tf.paragraphs[0].font.color.rgb = RGBColor(0x4A, 0x72, 0xC4)
p = tf.add_paragraph()
p.text = "• Nuevos clientes: 1.247"
p.level = 1 # nivel de sangría
# Añadir imagen
diapositiva2 = prs.slides.add_slide(prs.slide_layouts[6])
pic = diapositiva2.shapes.add_picture(
'grafico.png',
left=Inches(1), top=Inches(1),
width=Inches(8), height=Inches(5)
)
prs.save("salida.pptx")
Conversión de PPTX
# Convertir a PDF (LibreOffice)
libreoffice --headless --convert-to pdf presentacion.pptx
# Convertir a imágenes (una imagen por diapositiva)
libreoffice --headless --convert-to png presentacion.pptx
# Convertir a vídeo usando LibreOffice + ffmpeg
libreoffice --headless --convert-to png --outdir /tmp/diapositivas/ presentacion.pptx
ffmpeg -framerate 1/5 -i /tmp/diapositivas/slide%d.png -c:v libx264 -r 30 salida.mp4
# Extraer todo el contenido de texto
python3 -c "
from pptx import Presentation
prs = Presentation('presentacion.pptx')
for diapositiva in prs.slides:
for forma in diapositiva.shapes:
if forma.has_text_frame:
for parrafo in forma.text_frame.paragraphs:
print(parrafo.text)
"
PPTX vs. ODP vs. PDF vs. HTML
| Formato | Editabilidad | Animaciones | Sin conexión | Abierto |
|---|---|---|---|---|
| PPTX | Completa | ✅ Completa | ✅ | ✅ OOXML |
| ODP | Completa | ✅ Limitada | ✅ | ✅ ODF |
| Solo lectura | ❌ | ✅ | ✅ | |
| HTML/Reveal.js | Limitada | ✅ CSS/JS | ✅ | ✅ |
| Google Slides | Completa | ✅ | ❌ | ❌ |
Resumen
El modelo de tres niveles patrón/diseño/diapositiva de PPTX permite un diseño coherente en presentaciones complejas mientras mantiene el XML de diapositivas individuales mínimo. Su estructura ZIP+XML facilita la generación programática con python-pptx o Apache POI. Los medios incrustados y los datos de animación son los mayores contribuyentes al tamaño del fichero. Para compartir, convertir a PDF preserva la fidelidad visual sin requerir PowerPoint. Para cualquier flujo de trabajo que requiera diapositivas editables y animadas compatibles con PowerPoint, PPTX es el formato definitivo.
Conversiones relacionadas
Conversiones de documento que siguen este tema: