
pptx
Відкрита JavaScript бібліотека для PowerPoint
Створюйте, редагуйте, валідуйте та анімуйте файли PPTX у Node.js та браузері з повною відповідністю ECMA-376.
Що таке pptx?
@office-kit/pptx — це сучасна, типізована бібліотека JavaScript для створення та редагування файлів PowerPoint (.pptx) як у середовищі Node.js, так і у браузері. Побудована навколо специфікації ECMA-376 PresentationML, вона надає потужну модель об’єктів, що відображає офіційну схему XML. На відміну від багатьох альтернатив, вона постачається як єдиний пакет ESM, який стабільно працює в різних середовищах, уникає крихкого XML на основі рядків і генерує файли, перевірені валідатором Microsoft Open XML SDK.
Бібліотека підтримує два робочі процеси: редагування існуючих шаблонів та створення колод з нуля. Вона обробляє слайди, форми, текст, таблиці, діаграми, анімації, коментарі та переходи з сильною типізацією та підтримкою tree-shaking для мінімального розміру пакету (~60 КБ для базового завантаження/збереження). Її дизайн забезпечує безпеку під час кругового проходу — небажаний вміст, який не описаний у схемі, зберігається, а не видаляється — що робить її ідеальною для використання у продакшн, де важлива валідність схеми та кросплатформна сумісність (PowerPoint, Keynote, Google Slides, LibreOffice).
Початок роботи з pptx
Встановіть @office-kit/pptx за допомогою npm, pnpm або yarn. Бібліотека розповсюджується як ESM‑пакет і підтримує tree‑shaking для мінімального розміру. Після встановлення імпортуйте функції, такі як `loadPresentation`, `savePresentation` або `createPresentation`, щоб розпочати створення або редагування файлів PPTX. API є послідовним у середовищах Node.js та браузера, а офіційний [pptx GitHub](https://github.com/office-kit/pptx) репозиторій містить докладні приклади використання, інструменти валідації та посібник з навичок для розробки за допомогою ШІ.
Встановіть pptx через NPM, pnpm або Yarn
# npm
npm install @office-kit/pptx
# pnpm
pnpm add @office-kit/pptx
# yarn
yarn add @office-kit/pptx
Редагування шаблонів PowerPoint
Редагування шаблонів — це ключова перевага @office-kit/pptx. Ви можете завантажити існуючий файл PPTX, знайти заповнювачі (наприклад, заголовок, основний текст) і замінити текст програмно — ідеально підходить для динамічної генерації звітів. Бібліотека підтримує заміну на основі токенів на всіх слайдах, що робить пакетне оновлення без зусиль. Вона зберігає цілісність макету та забезпечує сумісність вихідного файлу з PowerPoint, Keynote та Google Slides. Такий робочий процес особливо корисний для шаблонних презентацій, де змінюється лише вміст між запусками.
Як замінити текст шаблону у файлі 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);
Створення колодок з нуля
За допомогою `createPresentation()` ви можете створити повний набір слайдів PowerPoint з нуля — без шаблону. Функція повертає повністю структурований набір з майстром, темою та стандартними макетами (`Blank`, `Title Slide`, `Title and Content`). Потім ви можете додавати слайди, вставляти текстові блоки, зображення, таблиці та діаграми, використовуючи типізовані API. Такий підхід дає повний контроль над дизайном і вмістом, дозволяючи програмно генерувати презентації для панелей інструментів, звітів або презентацій, створених ШІ, при збереженні сумісності з ECMA-376.
Як створити нову презентацію PowerPoint з нуля?
import {
addTitleSlide,
createPresentation,
savePresentation,
} from '@office-kit/pptx';
const pres = createPresentation();
addTitleSlide(pres, 'Q3 Business Review');
const out: Uint8Array = await savePresentation(pres);
Діаграми, анімації та коментарі
@office-kit/pptx підтримує багаті елементи слайдів, включаючи діаграми (bar, line, pie, area), анімації (fadeIn, fadeOut, appear) та коментарі. Діаграми вбудовують живі дані Excel для редагування в PowerPoint, тоді як анімації використовують попередньо налаштовані ефекти з можливістю налаштування тривалості. Коментарі дозволяють додавати нотатки рецензентів з метаданими автора та необов’язковим розташуванням. Ці функції роблять бібліотеку придатною для створення інтерактивних, насичених даними презентацій, що відповідають професійним стандартам і проходять схематичну валідацію.
Як додати діаграму та анімацію до слайду?
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);
Перевірка та відповідність схемі
Забезпечення відповідності файлів PPTX стандарту ECMA-376 є критичним для сумісності між інструментами. @office-kit/pptx включає `validatePresentation()`, щоб виявляти проблеми, такі як відсутні зв’язки, недійсні ідентифікатори слайдів або пошкоджені посилання на макети. Він також використовує `xmllint` у CI, якщо доступний, для перевірки згенерованого XML проти офіційних схем. Цей шар валідації допомагає виявляти тонкі помилки до розповсюдження, забезпечуючи надійне відкриття презентацій у PowerPoint, Keynote, Google Slides та LibreOffice — без необхідності «відкрити і молитися».
Як перевірити презентацію 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.
