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: "2025년 4분기 사업 리뷰", 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년 1분기" }, { value: 420000 }] },
{ cells: [{ value: "2026년 2분기" }, { 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를 참조하세요.