React framework for print-ready PDFs
npm install @pdfn/reactNode.js SDK for pdfn. Generate PDFs from React components.
``bash`
npm install @pdfn/react
`typescript
import { pdfn, Document, Page } from '@pdfn/react';
import fs from 'fs';
const client = pdfn(); // Auto-reads PDFN_API_KEY env var
const { data, error } = await client.generate({
react: (
Hello World
),
});
if (error) {
console.error(error.message);
process.exit(1);
}
fs.writeFileSync('output.pdf', data.buffer);
`
Set your API key as an environment variable:
`bash`
export PDFN_API_KEY=pdfn_live_...
Get your API key at console.pdfn.dev.
No API key needed — just start the dev server:
`bash`
npx pdfn dev
`typescript`
const client = pdfn(); // No PDFN_API_KEY set → uses localhost:3456
`bash`
npm install @pdfn/tailwind
`typescript
import { Tailwind } from '@pdfn/tailwind';
const { data } = await client.generate({
react: (
Styled PDF
),
});
`
`typescript
import { Document, Page, PageNumber, TotalPages } from '@pdfn/react';
footer={
Error Handling
`typescript
const { data, error } = await client.generate({ react: });if (error) {
console.error(error.code); // "authentication_error"
console.error(error.message); // "Invalid API key."
console.error(error.suggestion); // "Check your PDFN_API_KEY..."
return;
}
fs.writeFileSync('invoice.pdf', data.buffer);
`Error codes:
configuration_error, validation_error, authentication_error, rate_limit_error, timeout_error, server_error, network_error, render_errorAPI Reference
$3
`typescript
pdfn() // Auto-reads PDFN_API_KEY, falls back to localhost
pdfn('pdfn_live_...') // Explicit API key
pdfn({ apiKey, baseUrl, timeout }) // Custom config
`$3
`typescript
const { data, error } = await client.generate({
react: ,
standard: 'PDF/A-2b', // Archival compliance
timeout: 60000,
});
`$3
`typescript
const { data, error } = await client.render({ react: });
// data.html = self-contained HTML string
`Components
| Component | Description |
|-----------|-------------|
|
| Root wrapper (title, fonts, metadata) |
| | Page container (size, margins, header/footer) |
| | Current page number |
| | Total page count |
| | Force page break |
| | Keep content together |
| | Repeating table header |Page Sizes
A4 · Letter · Legal · A3 · A5 · Tabloid · B4 · B5 · ['6in', '9in']TypeScript
Full TypeScript support with exported types:
`typescript
import type {
PdfnClient,
PdfnConfig,
PdfnError,
GenerateResponse,
RenderResponse,
DocumentProps,
PageProps,
} from '@pdfn/react';
``MIT