react-pdf
JSONスペックからPDFドキュメントを生成するためのReact PDFレンダラーです。`@json-render/react-pdf`を使用してJSONスペックをPDFバッファ・ストリーム・ファイルとして出力する際に活用できます。
description の原文を見る
React PDF renderer for json-render. Use when generating PDF documents from JSON specs, working with @json-render/react-pdf, or rendering specs to PDF buffers/streams/files.
SKILL.md 本文
@json-render/react-pdf
@react-pdf/rendererを使用してJSON仕様からPDFドキュメントを生成するReact PDFレンダラーです。
インストール
npm install @json-render/core @json-render/react-pdf
クイックスタート
import { renderToBuffer } from "@json-render/react-pdf";
import type { Spec } from "@json-render/core";
const spec: Spec = {
root: "doc",
elements: {
doc: { type: "Document", props: { title: "Invoice" }, children: ["page"] },
page: {
type: "Page",
props: { size: "A4" },
children: ["heading", "table"],
},
heading: {
type: "Heading",
props: { text: "Invoice #1234", level: "h1" },
children: [],
},
table: {
type: "Table",
props: {
columns: [
{ header: "Item", width: "60%" },
{ header: "Price", width: "40%", align: "right" },
],
rows: [
["Widget A", "$10.00"],
["Widget B", "$25.00"],
],
},
children: [],
},
},
};
const buffer = await renderToBuffer(spec);
レンダリングAPI
import { renderToBuffer, renderToStream, renderToFile } from "@json-render/react-pdf";
// メモリ内バッファ
const buffer = await renderToBuffer(spec);
// 読み込み可能なストリーム (HTTPレスポンスにパイプ)
const stream = await renderToStream(spec);
stream.pipe(res);
// 直接ファイルに出力
await renderToFile(spec, "./output.pdf");
すべてのレンダリング関数は、オプションの第2引数 { registry?, state?, handlers? } を受け付けます。
標準コンポーネント
| コンポーネント | 説明 |
|---|---|
Document | トップレベルのPDFラッパー(ルートである必要があります) |
Page | サイズ(A4、LETTER)、向き、余白を指定するページ |
View | 汎用コンテナ(パディング、マージン、背景、枠線) |
Row, Column | ギャップ、配置、正当化を持つFlexレイアウト |
Heading | h1-h4見出しテキスト |
Text | 本文テキスト(フォントサイズ、色、太さ、配置) |
Image | URLまたはbase64からの画像 |
Link | テキストとhrefを持つハイパーリンク |
Table | 型付きカラムと行を持つデータテーブル |
List | 順序付きまたは順序なしリスト |
Divider | 水平線区切り |
Spacer | 空の縦スペース |
PageNumber | 現在のページ番号と総ページ数 |
カスタムカタログ
import { defineCatalog } from "@json-render/core";
import { schema, defineRegistry, renderToBuffer } from "@json-render/react-pdf";
import { standardComponentDefinitions } from "@json-render/react-pdf/catalog";
import { z } from "zod";
const catalog = defineCatalog(schema, {
components: {
...standardComponentDefinitions,
Badge: {
props: z.object({ label: z.string(), color: z.string().nullable() }),
slots: [],
description: "A colored badge label",
},
},
actions: {},
});
const { registry } = defineRegistry(catalog, {
components: {
Badge: ({ props }) => (
<View style={{ backgroundColor: props.color ?? "#e5e7eb", padding: 4 }}>
<Text>{props.label}</Text>
</View>
),
},
});
const buffer = await renderToBuffer(spec, { registry });
外部ストア(制御モード)
StateStoreを渡して状態を完全に制御します:
import { createStateStore } from "@json-render/react-pdf";
const store = createStateStore({ invoice: { total: 100 } });
store.set("/invoice/total", 200);
サーバー安全なインポート
Reactを引き込まずにスキーマとカタログをインポートします:
import { schema, standardComponentDefinitions } from "@json-render/react-pdf/server";
ライセンス: Apache-2.0(寛容ライセンスのため全文を引用しています) · 原本リポジトリ
詳細情報
- 作者
- vercel-labs
- ライセンス
- Apache-2.0
- 最終更新
- 不明
Source: https://github.com/vercel-labs/json-render / ライセンス: Apache-2.0
関連スキル
doubt-driven-development
重要な判断はすべて、本番環境への展開前に新しい視点から対抗的レビューを実施します。速度より正確性が重要な場合、不慣れなコードを扱う場合、本番環境・セキュリティに関わるロジック・取り消し不可の操作など影響度が高い場合、または後でバグを修正するよりも今検証する方が効率的な場合に活用してください。
apprun-skills
TypeScriptを使用したAppRunアプリケーションのMVU設計に関する総合的なガイダンスが得られます。コンポーネントパターン、イベントハンドリング、状態管理(非同期ジェネレータを含む)、パラメータと保護機能を備えたルーティング・ナビゲーション、vistestを使用したテストに対応しています。AppRunコンポーネントの設計・レビュー、ルートの配線、状態フローの管理、AppRunテストの作成時に活用してください。
desloppify
コードベースのヘルスチェックと技術負債の追跡ツールです。コード品質、技術負債、デッドコード、大規模ファイル、ゴッドクラス、重複関数、コードスメル、命名規則の問題、インポートサイクル、結合度の問題についてユーザーが質問した場合に使用してください。また、ヘルススコアの確認、次の改善項目の提案、クリーンアップ計画の作成をリクエストされた際にも対応します。29言語に対応しています。
debugging-and-error-recovery
テストが失敗したり、ビルドが壊れたり、動作が期待と異なったり、予期しないエラーが発生したりした場合に、体系的な根本原因デバッグをガイドします。推測ではなく、根本原因を見つけて修正するための体系的なアプローチが必要な場合に使用してください。
test-driven-development
テスト駆動開発により実装を進めます。ロジックの実装、バグの修正、動作の変更など、あらゆる場面で活用できます。コードが正常に動作することを証明する必要がある場合、バグ報告を受けた場合、既存機能を修正する予定がある場合に使用してください。
incremental-implementation
変更を段階的に実施します。複数のファイルに影響する機能や変更を実装する場合に使用してください。大量のコードを一度に書こうとしている場合や、タスクが一度では完結できないほど大きい場合に活用します。