pptx

 
 

Open Source JavaScript-bibliotek til PowerPoint

Opret, rediger, valider & animer PPTX-filer i Node.js & browser med fuld ECMA-376-overensstemmelse.

Hvad er pptx?

@office-kit/pptx er et moderne, typet JavaScript-bibliotek til at generere og redigere PowerPoint‑filer (.pptx) i både Node.js‑ og browser‑miljøer. Bygget omkring ECMA‑376 PresentationML‑specifikationen leverer det en robust objektmodel, der spejler det officielle XML‑skema. I modsætning til mange alternativer leverer det en enkelt ESM‑pakke, der fungerer konsistent på tværs af miljøer, undgår skrøbelig strengbaseret XML og udgiver filer, der er valideret mod Microsofts Open XML SDK‑validator.

Biblioteket understøtter to arbejdsgange: redigering af eksisterende skabeloner og oprettelse af decks fra bunden. Det håndterer slides, former, tekst, tabeller, diagrammer, animationer, kommentarer og overgange med stærk typning og tree‑shaking‑understøttelse for minimal bundtstørrelse (~60 KB for grundlæggende indlæsning/gemning). Dets design sikrer round‑trip‑sikkerhed—udeladt indhold bevares, ikke fjernes—hvilket gør det ideelt til produktionsbrug, hvor skema‑gyldighed og tværplatformskompatibilitet (PowerPoint, Keynote, Google Slides, LibreOffice) er kritisk.

Previous Next

Kom i gang med pptx

Installer @office-kit/pptx via npm, pnpm eller yarn. Biblioteket distribueres som en ESM-pakke og understøtter tree-shaking for et minimalt fodaftryk. Efter installationen kan du importere funktioner som `loadPresentation`, `savePresentation` eller `createPresentation` for at begynde at oprette eller redigere PPTX-filer. API'et er konsistent på tværs af Node.js- og browsermiljøer, og det officielle [pptx GitHub](https://github.com/office-kit/pptx) repository indeholder detaljerede brugseksempler, valideringsværktøjer og en færdighedsguide til AI-assisteret udvikling.

Installer pptx via NPM, pnpm eller Yarn

# npm
npm install @office-kit/pptx

# pnpm
pnpm add @office-kit/pptx

# yarn
yarn add @office-kit/pptx

Rediger PowerPoint-skabeloner

Skabelonredigering er en kernefunktion i @office-kit/pptx. Du kan indlæse en eksisterende PPTX-fil, finde pladsholdere (fx titel, brødtekst) og erstatte tekst programmatisk—ideelt til dynamisk rapportgenerering. Biblioteket understøtter token-baseret udskiftning på tværs af alle slides, hvilket gør batchopdateringer ubesværet. Det bevarer layoutets integritet og sikrer, at output forbliver kompatibelt med PowerPoint, Keynote og Google Slides. Denne arbejdsgang er især nyttig til skabelonpræsentationer, hvor kun indholdet ændres mellem kørsel.

Hvordan erstatter du skabelontekst i en PowerPoint-fil?

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

Opret præsentationer fra bunden

Med `createPresentation()` kan du opbygge en komplet PowerPoint‑præsentation fra bunden—ingen skabelon kræves. Funktionen returnerer en fuldt struktureret præsentation med en master, et tema og standardlayout (`Blank`, `Title Slide`, `Title and Content`). Du kan derefter tilføje slides, indsætte tekstbokse, billeder, tabeller og diagrammer ved hjælp af typede API'er. Denne tilgang giver fuld kontrol over design og indhold, så du kan generere præsentationer programmatisk til dashboards, rapporter eller AI‑drevede slide‑decks, mens du opretholder ECMA‑376‑overensstemmelse.

Hvordan opretter du en ny PowerPoint-præsentation fra bunden?

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

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

Diagrammer, animationer og kommentarer

@office-kit/pptx understøtter rige slide‑elementer inklusive diagrammer (søjle, linje, cirkel, område), animationer (fadeIn, fadeOut, appear) og kommentarer. Diagrammer indlejrer live Excel‑data til redigering i PowerPoint, mens animationer bruger forudindstillede effekter med konfigurerbare varigheder. Kommentarer giver dig mulighed for at tilføje reviewer‑noter med forfatter‑metadata og valgfri placering. Disse funktioner gør biblioteket velegnet til at skabe interaktive, data‑rige præsentationer, der opfylder professionelle standarder og bestå schema‑validering.

Hvordan tilføjer du et diagram og en animation til et dias?

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

Validering og overholdelse af skema

Sikring af, at PPTX-filer er ECMA-376‑kompatible, er afgørende for kompatibilitet på tværs af værktøjer. @office-kit/pptx inkluderer `validatePresentation()` for at opdage problemer som manglende relationer, ugyldige slide‑ID'er eller ødelagte layout‑referencer. Det bruger også `xmllint` i CI, hvor det er tilgængeligt, til at validere genereret XML mod officielle skemaer. Dette valideringslag hjælper med at fange subtile fejl før distribution, så præsentationer åbnes pålideligt i PowerPoint, Keynote, Google Slides og LibreOffice—uden at skulle stole på "open and pray"‑adfærd.

Hvordan validerer du en PowerPoint-præsentation?

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