PaperJSX ドキュメント生成
JSON レイアウト仕様からプロフェッショナルなドキュメントを生成します。PaperJSX は生成専用です — 新しいファイルを作成し、既存のファイルは編集しません。
トリガー
以下のようなリクエストがあった場合にこのスキルを使用します:
- プレゼンテーションの作成、またはスライドの生成
- PPTX ファイルまたは PowerPoint ファイルの作成
- Word 文書または DOCX の作成
- グラフを含む Excel スプレッドシートの生成
- JSON から PPTX、JSON から DOCX、または JSON から XLSX ファイルの作成
- PDF 請求書、レポート、またはグラフ文書の生成
インストール
該当する形式のパッケージをインストールします:
# プレゼンテーション
npm install @paperjsx/json-to-pptx
# Word 文書
npm install @paperjsx/json-to-docx
# スプレッドシート
npm install @paperjsx/json-to-xlsx
# PDF 文書
npm install @paperjsx/json-to-pdf
仕組み
references/json-schema.mdのスキーマに従って JSON レイアウト仕様を作成します- JSON を PaperJSX エンジンに渡す Node.js スクリプトを作成します
- スクリプトを実行して出力ファイルを生成します
- 出力ファイルが存在し、サイズが 0 バイトでないことを確認します
PaperJSX の手続き型 API コードを記述しないでください。実行モデルは常に「JSON 仕様を入力 → ドキュメントファイルを出力」です。
例: PPTX 生成
import { PaperEngine } from "@paperjsx/json-to-pptx";
import fs from "node:fs";
const spec = {
type: "Document",
meta: { title: "Q4 レビュー" },
slides: [
{
type: "Slide",
children: [
{ type: "Text", content: "Q4 2025 事業レビュー", style: { fontSize: 36, bold: true } }
]
}
]
};
const buffer = await PaperEngine.render(spec);
fs.writeFileSync("presentation.pptx", buffer);
console.log("presentation.pptx を生成しました");
例: DOCX 生成
import { renderToDocx } from "@paperjsx/json-to-docx";
import fs from "node:fs";
const result = await renderToDocx({
type: "DocxDocument",
pageSize: "a4",
orientation: "portrait",
pages: [
{
elements: [
{ type: "heading", level: 1, text: "四半期レポート" },
{ type: "paragraph", text: "セクションの内容はこちらです。" }
]
}
]
});
fs.writeFileSync("report.docx", result.buffer);
console.log("report.docx を生成しました");
例: XLSX 生成
import { SpreadsheetEngine } from "@paperjsx/json-to-xlsx";
import fs from "node:fs";
const spec = {
meta: { title: "売上データ", creator: "PaperJSX" },
sheets: [{
name: "売上",
rows: [
{ cells: [{ value: "四半期" }, { value: "売上" }] },
{ cells: [{ value: "2026年Q1" }, { value: 420000 }] },
{ cells: [{ value: "2026年Q2" }, { value: 510000 }] }
]
}]
};
const buffer = await SpreadsheetEngine.render(spec);
fs.writeFileSync("revenue.xlsx", buffer);
console.log("revenue.xlsx を生成しました");
検証
ファイル生成後は、必ず以下のように検証します:
import fs from "node:fs";
const stats = fs.statSync("output.pptx");
if (stats.size === 0) {
throw new Error("生成されたファイルが空です");
}
console.log(`出力ファイル: ${stats.size} バイト`);
エンジンがエラーをスローした場合は、完全なエラーメッセージをユーザーに表示します。
スキーマリファレンス
全対応形式の完全な JSON レイアウト仕様スキーマについては、references/json-schema.md を参照してください。