pptx

 
 

Open source JavaScript-bibliotheek voor PowerPoint

Maak, bewerk, valideer & animeer PPTX-bestanden in Node.js & browser met volledige ECMA-376-naleving.

Wat is pptx?

@office-kit/pptx is een moderne, getypeerde JavaScript-bibliotheek voor het genereren en bewerken van PowerPoint‑bestanden (.pptx) in zowel Node.js‑ als browseromgevingen. Gebouwd rond de ECMA‑376 PresentationML-specificatie, biedt het een robuust objectmodel dat het officiële XML‑schema weerspiegelt. In tegenstelling tot veel alternatieven levert het een enkele ESM‑bundle die consistent werkt in alle omgevingen, vermijdt fragiele op strings gebaseerde XML, en genereert bestanden die gevalideerd zijn tegen de validator van Microsoft’s Open XML SDK.

De bibliotheek ondersteunt twee workflows: het bewerken van bestaande sjablonen en het maken van decks vanaf nul. Het verwerkt dia's, vormen, tekst, tabellen, grafieken, animaties, opmerkingen en overgangen met sterke typisering en tree-shaking-ondersteuning voor een minimale bundelgrootte (~60 KB voor basis laden/opslaan). Het ontwerp garandeert round‑trip veiligheid—onmodelleerde inhoud wordt bewaard, niet verwijderd—wat het ideaal maakt voor productiegebruik waar schema‑validiteit en cross‑platform compatibiliteit (PowerPoint, Keynote, Google Slides, LibreOffice) cruciaal zijn.

Previous Next

Aan de slag met pptx

Installeer @office-kit/pptx via npm, pnpm of yarn. De bibliotheek wordt gedistribueerd als een ESM-bundel en ondersteunt tree-shaking voor een minimale footprint. Na installatie importeer je functies zoals `loadPresentation`, `savePresentation` of `createPresentation` om PPTX-bestanden te maken of te bewerken. De API is consistent in zowel Node.js- als browseromgevingen, en de officiële [pptx GitHub](https://github.com/office-kit/pptx) repository bevat gedetailleerde gebruiksvoorbeelden, validatietools en een handleiding voor AI-ondersteunde ontwikkeling.

Installeer pptx via NPM, pnpm of Yarn

# npm
npm install @office-kit/pptx

# pnpm
pnpm add @office-kit/pptx

# yarn
yarn add @office-kit/pptx

PowerPoint-sjablonen bewerken

Sjabloonbewerking is een kernsterkte van @office-kit/pptx. Je kunt een bestaand PPTX-bestand laden, placeholders (bijv. titel, inhoud) vinden en tekst programmatisch vervangen — ideaal voor dynamische rapportgeneratie. De bibliotheek ondersteunt token-gebaseerde vervanging over alle dia's, waardoor batch-updates moeiteloos zijn. Het behoudt de lay-outintegriteit en zorgt ervoor dat de output compatibel blijft met PowerPoint, Keynote en Google Slides. Deze workflow is vooral nuttig voor sjabloonpresentaties waarbij alleen de inhoud tussen runs verandert.

Hoe vervang je sjabloontekst in een PowerPoint-bestand?

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

Decks vanaf nul maken

Met `createPresentation()` kun je een volledige PowerPoint-presentatie vanaf nul bouwen—geen sjabloon vereist. De functie retourneert een volledig gestructureerde presentatie met een master, thema en standaardlay-outs (`Blank`, `Title Slide`, `Title and Content`). Je kunt vervolgens dia's toevoegen, tekstvakken, afbeeldingen, tabellen en grafieken invoegen met behulp van getypeerde API's. Deze aanpak biedt volledige controle over ontwerp en inhoud, waardoor je programmatisch presentaties kunt genereren voor dashboards, rapporten of AI-gedreven presentaties terwijl je ECMA-376‑compatibiliteit behoudt.

Hoe maak je een nieuw PowerPoint-deck vanaf nul?

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

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

Grafieken, animaties en opmerkingen

@office-kit/pptx ondersteunt rijke dia‑elementen, waaronder grafieken (staaf, lijn, taart, gebied), animaties (fadeIn, fadeOut, appear) en opmerkingen. Grafieken bevatten live Excel‑gegevens voor bewerking in PowerPoint, terwijl animaties vooraf ingestelde effecten gebruiken met configureerbare duur. Met opmerkingen kun je beoordelaarsnotities toevoegen met auteursmetadata en optionele positionering. Deze functies maken de bibliotheek geschikt voor het maken van interactieve, data‑rijke presentaties die voldoen aan professionele normen en de schema‑validatie doorstaan.

Hoe voeg je een diagram en animatie toe aan een dia?

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

Validatie en schema-naleving

Zorg ervoor dat PPTX‑bestanden ECMA‑376‑conform zijn, is cruciaal voor compatibiliteit tussen tools. @office-kit/pptx bevat `validatePresentation()` om problemen te detecteren zoals ontbrekende relaties, ongeldige dia‑ID's of kapotte layoutreferenties. Het gebruikt ook `xmllint` in CI waar beschikbaar om de gegenereerde XML te valideren tegen officiële schema's. Deze validatielaag helpt subtiele fouten te vangen vóór distributie, waardoor presentaties betrouwbaar openen in PowerPoint, Keynote, Google Slides en LibreOffice—zonder te vertrouwen op "open and pray"‑gedrag.

Hoe valideer je een PowerPoint-presentatie?

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.
 Dutch