pptx

 
 

Biblioteca JavaScript de Código Aberto para PowerPoint

Criar, Editar, Validar e Animar Arquivos PPTX no Node.js e Navegador com Total Conformidade ECMA-376.

O que é pptx?

@office-kit/pptx é uma biblioteca JavaScript moderna e tipada para gerar e editar arquivos PowerPoint (.pptx) tanto em ambientes Node.js quanto de navegador. Construída em torno da especificação ECMA-376 PresentationML, fornece um modelo de objetos robusto que espelha o esquema XML oficial. Ao contrário de muitas alternativas, entrega um único bundle ESM que funciona de forma consistente em todos os ambientes, evita XML frágil baseado em strings e gera arquivos validados contra o validador Open XML SDK da Microsoft.

A biblioteca suporta dois fluxos de trabalho: edição de modelos existentes e criação de decks do zero. Ela lida com slides, formas, texto, tabelas, gráficos, animações, comentários e transições com tipagem forte e suporte a tree‑shaking para tamanho de pacote mínimo (~60 KB para carregamento/salvamento básico). Seu design garante segurança de ida e volta — o conteúdo não modelado é preservado, não removido — tornando-a ideal para uso em produção onde a validade do esquema e a compatibilidade multiplataforma (PowerPoint, Keynote, Google Slides, LibreOffice) são críticas.

Previous Next

Começando com pptx

Instale @office-kit/pptx via npm, pnpm ou yarn. A biblioteca é distribuída como um bundle ESM e suporta tree-shaking para uma pegada mínima. Após a instalação, importe funções como `loadPresentation`, `savePresentation` ou `createPresentation` para começar a criar ou editar arquivos PPTX. A API é consistente em ambientes Node.js e de navegador, e o repositório oficial [GitHub do pptx](https://github.com/office-kit/pptx) inclui exemplos de uso detalhados, ferramentas de validação e um guia de habilidades para desenvolvimento assistido por IA.

Instale pptx via NPM, pnpm ou Yarn

# npm
npm install @office-kit/pptx

# pnpm
pnpm add @office-kit/pptx

# yarn
yarn add @office-kit/pptx

Editar modelos do PowerPoint

A edição de modelos é um ponto forte do @office-kit/pptx. Você pode carregar um arquivo PPTX existente, localizar marcadores de posição (por exemplo, título, corpo) e substituir texto programaticamente — ideal para geração dinâmica de relatórios. A biblioteca suporta substituição baseada em tokens em todos os slides, tornando as atualizações em lote fáceis. Ela preserva a integridade do layout e garante que a saída permaneça compatível com PowerPoint, Keynote e Google Slides. Esse fluxo de trabalho é especialmente útil para apresentações baseadas em modelo onde apenas o conteúdo muda entre execuções.

Como substituir texto de modelo em um arquivo 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);

Criar decks do zero

Com `createPresentation()`, você pode criar um deck completo do PowerPoint do zero — sem necessidade de modelo. A função retorna um deck totalmente estruturado com um mestre, tema e layouts padrão (`Blank`, `Title Slide`, `Title and Content`). Você pode então adicionar slides, inserir caixas de texto, imagens, tabelas e gráficos usando APIs tipadas. Essa abordagem oferece controle total sobre o design e o conteúdo, permitindo a geração programática de apresentações para dashboards, relatórios ou decks de slides impulsionados por IA, mantendo a conformidade com ECMA-376.

Como criar um novo deck PowerPoint do zero?

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

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

Gráficos, animações e comentários

@office-kit/pptx suporta elementos de slide avançados, incluindo gráficos (barra, linha, pizza, área), animações (fadeIn, fadeOut, appear) e comentários. Os gráficos incorporam dados ao vivo do Excel para edição no PowerPoint, enquanto as animações utilizam efeitos predefinidos com durações configuráveis. Os comentários permitem adicionar notas de revisores com metadados do autor e posicionamento opcional. Esses recursos tornam a biblioteca adequada para criar apresentações interativas e ricas em dados que atendem aos padrões profissionais e passam na validação de esquema.

Como adicionar um gráfico e animação a um slide?

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);

Validação e conformidade de esquema

Garantir que os arquivos PPTX estejam em conformidade com ECMA-376 é fundamental para a compatibilidade entre ferramentas. @office-kit/pptx inclui `validatePresentation()` para detectar problemas como relacionamentos ausentes, IDs de slide inválidos ou referências de layout quebradas. Também usa `xmllint` na CI, quando disponível, para validar o XML gerado contra os esquemas oficiais. Essa camada de validação ajuda a capturar erros sutis antes da distribuição, garantindo que as apresentações abram de forma confiável no PowerPoint, Keynote, Google Slides e LibreOffice—sem depender do comportamento "abrir e rezar".

Como validar uma apresentação 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.
 Português