pptx

 
 

PowerPoint 用オープンソース JavaScript ライブラリ

Node.js とブラウザで PPTX ファイルを作成、編集、検証、アニメーション化し、完全な ECMA-376 準拠を実現します。

pptxとは何ですか?

@office-kit/pptx は、Node.js とブラウザ環境の両方で PowerPoint(.pptx)ファイルを生成・編集するための、モダンで型付けされた JavaScript ライブラリです。ECMA-376 PresentationML 仕様を基盤としており、公式 XML スキーマを鏡像する堅牢なオブジェクトモデルを提供します。多くの代替品とは異なり、単一の ESM バンドルを提供し、環境間で一貫して動作し、脆弱な文字列ベースの XML を回避し、Microsoft の Open XML SDK バリデータで検証されたファイルを出力します。

このライブラリは、既存のテンプレートの編集とゼロからのデッキ作成という2つのワークフローをサポートします。スライド、シェイプ、テキスト、テーブル、チャート、アニメーション、コメント、トランジションを強い型付けとツリーシェイキング対応で扱い、最小バンドルサイズ(基本的なロード/セーブで約60KB)を実現します。その設計は往復安全性を保証し、モデル化されていないコンテンツは削除されずに保持されるため、スキーマの有効性とクロスプラットフォーム互換性(PowerPoint、Keynote、Google Slides、LibreOffice)が重要な本番環境に最適です。

Previous Next

pptxのはじめ方

npm、pnpm、または yarn を使用して @office-kit/pptx をインストールします。このライブラリは ESM バンドルとして配布され、最小のフットプリントのためにツリーシェイキングをサポートしています。インストール後、`loadPresentation`、`savePresentation`、または `createPresentation` のような関数をインポートして、PPTX ファイルの作成または編集を開始します。API は Node.js とブラウザ環境の両方で一貫しており、公式の [pptx GitHub](https://github.com/office-kit/pptx) リポジトリには、詳細な使用例、検証ツール、AI 支援開発のためのスキルガイドが含まれています。

NPM、pnpm、または Yarn で pptx をインストールする

# 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 を使用してスライドを追加したり、テキストボックス、画像、表、チャートを挿入したりできます。このアプローチにより、デザインとコンテンツを完全にコントロールでき、ダッシュボード、レポート、または AI 主導のスライドデッキ向けにプログラムでプレゼンテーションを生成しながら、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)、コメントなどのリッチなスライド要素をサポートします。チャートは PowerPoint で編集できるライブ Excel データを埋め込み、アニメーションは設定可能な期間でプリセット効果を使用します。コメントでは、作者メタデータとオプションの位置情報を含むレビューノートを追加できます。これらの機能により、プロフェッショナルな基準を満たし、スキーマ検証に合格するインタラクティブでデータリッチなプレゼンテーションの作成にこのライブラリが適しています。

スライドにチャートとアニメーションを追加する方法は?

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()` が含まれており、欠落したリレーションシップや無効なスライド ID、壊れたレイアウト参照などの問題を検出します。また、利用可能な環境では CI で `xmllint` を使用し、生成された XML を公式スキーマに対して検証します。この検証レイヤーにより、配布前に微細なエラーを捕捉でき、PowerPoint、Keynote、Google Slides、LibreOffice でプレゼンテーションが確実に開くようになります—"open and pray" の動作に依存せずに。

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.
 日本