
pptx
Open Source Biblioteka JavaScript dla PowerPoint
Twórz, edytuj, waliduj i animuj pliki PPTX w Node.js i przeglądarce, w pełnej zgodności z ECMA-376.
Czym jest pptx?
@office-kit/pptx to nowoczesna, typowana biblioteka JavaScript do generowania i edytowania plików PowerPoint (.pptx) zarówno w środowiskach Node.js, jak i przeglądarki. Zbudowana wokół specyfikacji ECMA-376 PresentationML, zapewnia solidny model obiektowy odzwierciedlający oficjalny schemat XML. W przeciwieństwie do wielu alternatyw, dostarcza pojedynczy pakiet ESM, który działa konsekwentnie we wszystkich środowiskach, unika kruchego XML opartego na łańcuchach znaków i generuje pliki walidowane przy użyciu walidatora Microsoft’s Open XML SDK validator.
Biblioteka obsługuje dwa przepływy pracy: edytowanie istniejących szablonów oraz tworzenie prezentacji od podstaw. Obsługuje slajdy, kształty, tekst, tabele, wykresy, animacje, komentarze i przejścia, zapewniając silne typowanie oraz wsparcie tree-shaking dla minimalnego rozmiaru pakietu (~60 KB przy podstawowym ładowaniu/zapisywaniu). Jej projekt zapewnia bezpieczeństwo w cyklu round‑trip — nieprzetworzone treści są zachowywane, a nie usuwane — co czyni ją idealną do zastosowań produkcyjnych, gdzie kluczowa jest zgodność ze schematem oraz kompatybilność międzyplatformowa (PowerPoint, Keynote, Google Slides, LibreOffice).
Rozpoczęcie pracy z pptx
Zainstaluj @office-kit/pptx za pomocą npm, pnpm lub yarn. Biblioteka jest dystrybuowana jako pakiet ESM i obsługuje tree-shaking, aby zapewnić minimalny rozmiar. Po instalacji zaimportuj funkcje takie jak `loadPresentation`, `savePresentation` lub `createPresentation`, aby rozpocząć tworzenie lub edytowanie plików PPTX. API jest spójne zarówno w środowiskach Node.js, jak i przeglądarki, a oficjalne repozytorium [pptx GitHub](https://github.com/office-kit/pptx) zawiera szczegółowe przykłady użycia, narzędzia walidacyjne oraz przewodnik umiejętności dla rozwoju wspomaganego AI.
Zainstaluj pptx za pomocą NPM, pnpm lub Yarn
# npm
npm install @office-kit/pptx
# pnpm
pnpm add @office-kit/pptx
# yarn
yarn add @office-kit/pptx
Edytuj szablony PowerPoint
Edycja szablonów jest kluczową zaletą @office-kit/pptx. Możesz załadować istniejący plik PPTX, zlokalizować miejsca zastępcze (np. tytuł, treść) i programowo zamienić tekst — idealne do dynamicznego generowania raportów. Biblioteka obsługuje zamianę opartą na tokenach na wszystkich slajdach, co sprawia, że aktualizacje wsadowe są proste. Zachowuje integralność układu i zapewnia, że wynik pozostaje kompatybilny z PowerPoint, Keynote i Google Slides. Ten przepływ pracy jest szczególnie przydatny w prezentacjach szablonowych, gdzie jedynie treść zmienia się pomiędzy uruchomieniami.
Jak zastąpić tekst szablonu w pliku 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);
Twórz prezentacje od podstaw
Za pomocą `createPresentation()` możesz zbudować kompletną prezentację PowerPoint od zera — bez wymaganego szablonu. Funkcja zwraca w pełni ustrukturyzowaną prezentację z masterem, motywem i domyślnymi układami (`Blank`, `Title Slide`, `Title and Content`). Następnie możesz dodawać slajdy, wstawiać pola tekstowe, obrazy, tabele i wykresy przy użyciu typowanych API. Takie podejście daje pełną kontrolę nad projektem i treścią, umożliwiając programowe generowanie prezentacji dla pulpitów nawigacyjnych, raportów lub prezentacji napędzanych AI, zachowując zgodność z ECMA-376.
Jak utworzyć nową prezentację PowerPoint od podstaw?
import {
addTitleSlide,
createPresentation,
savePresentation,
} from '@office-kit/pptx';
const pres = createPresentation();
addTitleSlide(pres, 'Q3 Business Review');
const out: Uint8Array = await savePresentation(pres);
Wykresy, animacje i komentarze
@office-kit/pptx obsługuje bogate elementy slajdów, w tym wykresy (słupkowy, liniowy, kołowy, obszarowy), animacje (fadeIn, fadeOut, appear) oraz komentarze. Wykresy osadzają żywe dane z Excela do edycji w PowerPoint, natomiast animacje używają gotowych efektów z konfigurowalnymi czasami trwania. Komentarze pozwalają dodawać notatki recenzentów z metadanymi autora i opcjonalnym pozycjonowaniem. Te funkcje sprawiają, że biblioteka nadaje się do tworzenia interaktywnych, bogatych w dane prezentacji, które spełniają profesjonalne standardy i przechodzą walidację schematu.
Jak dodać wykres i animację do slajdu?
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);
Walidacja i zgodność ze schematem
Zapewnienie, że pliki PPTX są zgodne ze standardem ECMA-376, jest kluczowe dla kompatybilności między narzędziami. @office-kit/pptx zawiera `validatePresentation()` do wykrywania problemów takich jak brakujące relacje, nieprawidłowe identyfikatory slajdów lub uszkodzone odwołania do układów. Używa także `xmllint` w CI, gdy jest dostępny, do walidacji wygenerowanego XML względem oficjalnych schematów. Ta warstwa walidacji pomaga wychwycić subtelne błędy przed dystrybucją, zapewniając, że prezentacje otwierają się niezawodnie w PowerPoint, Keynote, Google Slides i LibreOffice — bez polegania na zachowaniu "otwórz i módl się".
Jak zweryfikować prezentację 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.
