
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 поддерживает богатые элементы слайдов, включая диаграммы (столбчатые, линейные, круговые, областные), анимации (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.
