
pptx
Öppen källkod JavaScript-bibliotek för PowerPoint
Skapa, redigera, validera & animera PPTX-filer i Node.js & webbläsare med full ECMA-376-efterlevnad.
Vad är pptx?
@office-kit/pptx är ett modernt, typat JavaScript‑bibliotek för att generera och redigera PowerPoint‑filer (.pptx) i både Node.js‑ och webbläsarmiljöer. Byggt kring ECMA‑376 PresentationML‑specifikationen erbjuder det en robust objektmodell som speglar det officiella XML‑schemat. Till skillnad från många alternativ levererar det ett enda ESM‑paket som fungerar konsekvent i alla miljöer, undviker skör sträng‑baserad XML och genererar filer som valideras mot Microsofts Open XML SDK‑validator.
Biblioteket stöder två arbetsflöden: redigering av befintliga mallar och skapande av presentationer från grunden. Det hanterar bilder, former, text, tabeller, diagram, animationer, kommentarer och övergångar med stark typning och tree‑shaking‑stöd för minimal paketstorlek (~60 KB för grundläggande laddning/sparning). Dess design säkerställer rundresesäkerhet—omodellerat innehåll bevaras, inte tas bort—vilket gör det idealiskt för produktionsbruk där schemavaliditet och plattformsoberoende kompatibilitet (PowerPoint, Keynote, Google Slides, LibreOffice) är kritiska.
Komma igång med pptx
Installera @office-kit/pptx via npm, pnpm eller yarn. Biblioteket distribueras som ett ESM‑paket och stödjer tree‑shaking för minimal fotavtryck. Efter installationen importerar du funktioner som `loadPresentation`, `savePresentation` eller `createPresentation` för att börja skapa eller redigera PPTX‑filer. API:et är konsekvent i både Node.js‑ och webbläsarmiljöer, och det officiella [pptx GitHub](https://github.com/office-kit/pptx)-arkivet innehåller detaljerade exempel på användning, valideringsverktyg och en färdighetsguide för AI‑assisterad utveckling.
Installera pptx via NPM, pnpm eller Yarn
# npm
npm install @office-kit/pptx
# pnpm
pnpm add @office-kit/pptx
# yarn
yarn add @office-kit/pptx
Redigera PowerPoint-mallar
Mallarredigering är en kärnstyrka i @office-kit/pptx. Du kan ladda en befintlig PPTX‑fil, hitta platshållare (t.ex. titel, brödtext) och ersätta text programatiskt—perfekt för dynamisk rapportgenerering. Biblioteket stödjer token‑baserad ersättning över alla bilder, vilket gör batch‑uppdateringar enkla. Det bevarar layoutens integritet och säkerställer att utdata förblir kompatibel med PowerPoint, Keynote och Google Slides. Detta arbetsflöde är särskilt användbart för mallbaserade presentationer där endast innehållet förändras mellan körningar.
Hur ersätter man malltext 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);
Skapa presentationer från grunden
Med `createPresentation()` kan du bygga en komplett PowerPoint-presentation från grunden—ingen mall krävs. Funktionen returnerar en fullt strukturerad presentation med en master, tema och standardlayouter (`Blank`, `Title Slide`, `Title and Content`). Du kan sedan lägga till bilder, infoga textrutor, bilder, tabeller och diagram med hjälp av typade API:er. Detta tillvägagångssätt ger full kontroll över design och innehåll, vilket möjliggör programmatisk generering av presentationer för instrumentpaneler, rapporter eller AI-drivna bildspel samtidigt som ECMA-376-efterlevnad upprätthålls.
Hur skapar man en ny PowerPoint‑presentation från grunden?
import {
addTitleSlide,
createPresentation,
savePresentation,
} from '@office-kit/pptx';
const pres = createPresentation();
addTitleSlide(pres, 'Q3 Business Review');
const out: Uint8Array = await savePresentation(pres);
Diagram, animationer och kommentarer
@office-kit/pptx stödjer rika bildelement inklusive diagram (stapel, linje, cirkel, område), animationer (fadeIn, fadeOut, appear) och kommentarer. Diagram bäddar in levande Excel-data för redigering i PowerPoint, medan animationer använder förinställda effekter med konfigurerbara varaktigheter. Kommentarer låter dig lägga till granskarnoteringar med författarmetadata och valfri positionering. Dessa funktioner gör biblioteket lämpligt för att skapa interaktiva, datarika presentationer som uppfyller professionella standarder och klarar schemavalidering.
Hur lägger man till ett diagram och en animation på en bild?
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 och schemakompatibilitet
Att säkerställa att PPTX‑filer är ECMA‑376‑kompatibla är avgörande för kompatibilitet mellan verktyg. @office-kit/pptx inkluderar `validatePresentation()` för att upptäcka problem som saknade relationer, ogiltiga bild‑ID:n eller brutna layout‑referenser. Det använder också `xmllint` i CI där det är tillgängligt för att validera genererad XML mot officiella scheman. Detta valideringslager hjälper till att fånga subtila fel innan distribution, vilket säkerställer att presentationer öppnas pålitligt i PowerPoint, Keynote, Google Slides och LibreOffice—utan att förlita sig på beteendet "open and pray".
Hur validerar man en PowerPoint‑presentation?
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.
