mirror of
https://github.com/vercel-labs/json-render.git
synced 2026-10-03 04:18:15 +08:00
Compare commits
1
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
5884069de8 |
@@ -6,6 +6,7 @@
|
||||
[
|
||||
"@json-render/core",
|
||||
"@json-render/react",
|
||||
"@json-render/react-pdf",
|
||||
"@json-render/shadcn",
|
||||
"@json-render/react-native",
|
||||
"@json-render/remotion",
|
||||
|
||||
@@ -0,0 +1,29 @@
|
||||
---
|
||||
"@json-render/core": minor
|
||||
"@json-render/react-pdf": minor
|
||||
---
|
||||
|
||||
New `@json-render/react-pdf` package for generating PDF documents from JSON specs.
|
||||
|
||||
### New: `@json-render/react-pdf`
|
||||
|
||||
PDF renderer for json-render, powered by `@react-pdf/renderer`. Define catalogs and registries the same way as `@json-render/react`, but output PDF documents instead of web UI.
|
||||
|
||||
- `renderToBuffer(spec)` — render a spec to an in-memory PDF buffer
|
||||
- `renderToStream(spec)` — render to a readable stream (pipe to HTTP response)
|
||||
- `renderToFile(spec, path)` — render directly to a file on disk
|
||||
- `defineRegistry` / `createRenderer` — same API as `@json-render/react` for custom components
|
||||
- `standardComponentDefinitions` — Zod-based catalog definitions (server-safe via `@json-render/react-pdf/catalog`)
|
||||
- `standardComponents` — React PDF implementations for all standard components
|
||||
- Server-safe import via `@json-render/react-pdf/server`
|
||||
|
||||
Standard components:
|
||||
|
||||
- **Document structure**: Document, Page
|
||||
- **Layout**: View, Row, Column
|
||||
- **Content**: Heading, Text, Image, Link
|
||||
- **Data**: Table, List
|
||||
- **Decorative**: Divider, Spacer
|
||||
- **Page-level**: PageNumber
|
||||
|
||||
Includes full context support: state management, visibility conditions, actions, validation, and repeat scopes — matching the capabilities of `@json-render/react`.
|
||||
@@ -4,6 +4,68 @@ export const metadata = { title: "Changelog" }
|
||||
|
||||
Notable changes and updates to json-render.
|
||||
|
||||
## v0.8.0
|
||||
|
||||
February 2026
|
||||
|
||||
### New: `@json-render/react-pdf`
|
||||
|
||||
PDF renderer for json-render, powered by [`@react-pdf/renderer`](https://react-pdf.org/). Define catalogs and registries the same way as `@json-render/react`, but output PDF documents instead of web UI.
|
||||
|
||||
```bash
|
||||
npm install @json-render/core @json-render/react-pdf
|
||||
```
|
||||
|
||||
```typescript
|
||||
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);
|
||||
```
|
||||
|
||||
Server-side rendering APIs:
|
||||
|
||||
- `renderToBuffer(spec)` -- render to an in-memory PDF buffer
|
||||
- `renderToStream(spec)` -- render to a readable stream (pipe to HTTP response)
|
||||
- `renderToFile(spec, path)` -- render directly to a file
|
||||
|
||||
15 standard components covering document structure (Document, Page), layout (View, Row, Column), content (Heading, Text, Image, Link), data (Table, List), decorative (Divider, Spacer), and page-level (PageNumber).
|
||||
|
||||
Supports custom catalogs with `defineRegistry`, server-safe imports via `@json-render/react-pdf/server`, and full context support (state, visibility, actions, validation, repeat scopes).
|
||||
|
||||
---
|
||||
|
||||
## v0.7.0
|
||||
|
||||
February 2026
|
||||
|
||||
Reference in New Issue
Block a user