pptx

 
 

Biblioteca JavaScript de código abierto para PowerPoint

Crear, editar, validar y animar archivos PPTX en Node.js y navegador con cumplimiento total de ECMA-376.

¿Qué es pptx?

@office-kit/pptx es una biblioteca moderna y tipada de JavaScript para generar y editar archivos PowerPoint (.pptx) tanto en entornos Node.js como de navegador. Construida sobre la especificación ECMA-376 PresentationML, proporciona un modelo de objetos robusto que refleja el esquema XML oficial. A diferencia de muchas alternativas, entrega un único paquete ESM que funciona de manera consistente en todos los entornos, evita XML frágil basado en cadenas y genera archivos validados contra el validador Open XML SDK de Microsoft.

La biblioteca admite dos flujos de trabajo: editar plantillas existentes y crear presentaciones desde cero. Maneja diapositivas, formas, texto, tablas, gráficos, animaciones, comentarios y transiciones con tipado fuerte y soporte de tree‑shaking para un tamaño de paquete mínimo (~60 KB para carga/guardado básico). Su diseño garantiza la seguridad de ida y vuelta—el contenido no modelado se conserva, no se elimina—lo que la hace ideal para uso en producción donde la validez del esquema y la compatibilidad multiplataforma (PowerPoint, Keynote, Google Slides, LibreOffice) son críticas.

Previous Next

Comenzando con pptx

Instala @office-kit/pptx mediante npm, pnpm o yarn. La biblioteca se distribuye como un paquete ESM y admite tree-shaking para una huella mínima. Después de la instalación, importa funciones como `loadPresentation`, `savePresentation` o `createPresentation` para comenzar a crear o editar archivos PPTX. La API es consistente en entornos Node.js y de navegador, y el repositorio oficial [pptx GitHub](https://github.com/office-kit/pptx) incluye ejemplos de uso detallados, herramientas de validación y una guía de habilidades para el desarrollo asistido por IA.

Instala pptx vía NPM, pnpm o Yarn

# npm
npm install @office-kit/pptx

# pnpm
pnpm add @office-kit/pptx

# yarn
yarn add @office-kit/pptx

Editar plantillas de PowerPoint

La edición de plantillas es una fortaleza principal de @office-kit/pptx. Puedes cargar un archivo PPTX existente, localizar marcadores de posición (p. ej., título, cuerpo) y reemplazar texto programáticamente—ideal para la generación dinámica de informes. La biblioteca admite reemplazo basado en tokens en todas las diapositivas, lo que hace que las actualizaciones por lotes sean sencillas. Preserva la integridad del diseño y garantiza que la salida siga siendo compatible con PowerPoint, Keynote y Google Slides. Este flujo de trabajo es especialmente útil para presentaciones con plantillas donde solo el contenido cambia entre ejecuciones.

¿Cómo reemplazar el texto de la plantilla en un archivo PowerPoint?

import {
  findSlidePlaceholder,
  getSlides,
  loadPresentation,
  savePresentation,
  setShapeText,
} from '@office-kit/pptx';

const pres = await loadPresentation(existingPptxBytes);
const cover = getSlides(pres)[0]!;
const title = findSlidePlaceholder(cover, 'title');
if (title) setShapeText(title, 'Q3 Review');
const body = findSlidePlaceholder(cover, 'body');
if (body) setShapeText(body, 'Numbers up and to the right.');
const out: Uint8Array = await savePresentation(pres);

Crear presentaciones desde cero

Con `createPresentation()`, puedes crear una presentación completa de PowerPoint desde cero, sin necesidad de una plantilla. La función devuelve una presentación totalmente estructurada con una diapositiva maestra, tema y diseños predeterminados (`Blank`, `Title Slide`, `Title and Content`). Luego puedes añadir diapositivas, insertar cuadros de texto, imágenes, tablas y gráficos usando APIs tipadas. Este enfoque brinda control total sobre el diseño y el contenido, permitiendo la generación programática de presentaciones para paneles, informes o presentaciones impulsadas por IA, mientras se mantiene la compatibilidad con ECMA-376.

¿Cómo crear una nueva presentación PowerPoint desde cero?

import {
  addTitleSlide,
  createPresentation,
  savePresentation,
} from '@office-kit/pptx';

const pres = createPresentation();
addTitleSlide(pres, 'Q3 Business Review');
const out: Uint8Array = await savePresentation(pres);

Gráficos, animaciones y comentarios

@office-kit/pptx admite elementos de diapositiva avanzados, incluidos gráficos (barra, línea, pastel, área), animaciones (fadeIn, fadeOut, appear) y comentarios. Los gráficos incrustan datos de Excel en vivo para su edición en PowerPoint, mientras que las animaciones utilizan efectos predefinidos con duraciones configurables. Los comentarios te permiten añadir notas de revisión con metadatos del autor y posicionamiento opcional. Estas características hacen que la biblioteca sea adecuada para crear presentaciones interactivas y ricas en datos que cumplen con los estándares profesionales y pasan la validación de esquema.

¿Cómo agregar un gráfico y una animación a una diapositiva?

import {
  addSlideChart,
  getSlides,
  loadPresentation,
  setShapeAnimation,
  savePresentation,
  inches,
} from '@office-kit/pptx';

const pres = await loadPresentation(templateBytes);
const slide = getSlides(pres)[0]!;
addSlideChart(slide!, {
  x: inches(0.5),
  y: inches(0.5),
  w: inches(8),
  h: inches(4.5),
  spec: {
    kind: 'column',
    categories: ['Q1', 'Q2', 'Q3', 'Q4'],
    series: [
      { name: 'Revenue', values: [120, 180, 240, 300] },
      { name: 'Cost', values: [80, 90, 130, 160] },
    ],
    title: 'FY26 plan',
  },
});
const shape = getSlideShapes(slide)[0]!;
setShapeAnimation(shape, { effect: 'fadeIn', durationMs: 800 });
await savePresentation(pres);

Validación y cumplimiento de esquemas

Garantizar que los archivos PPTX cumplan con ECMA-376 es fundamental para la compatibilidad entre herramientas. @office-kit/pptx incluye `validatePresentation()` para detectar problemas como relaciones faltantes, IDs de diapositivas no válidos o referencias de diseño rotas. También utiliza `xmllint` en CI cuando está disponible para validar el XML generado contra los esquemas oficiales. Esta capa de validación ayuda a detectar errores sutiles antes de la distribución, asegurando que las presentaciones se abran de forma fiable en PowerPoint, Keynote, Google Slides y LibreOffice—sin depender del comportamiento de "open and pray".

¿Cómo validar una presentación PowerPoint?

import { validatePresentation } from '@office-kit/pptx';

const issues = validatePresentation(pres);
for (const i of issues) console.error(i.severity, i.message);
// Catches missing rels, dangling slide ids, layouts without masters, etc.
 Español