// server.ts
import express from 'express';
import { Deckle } from '@getdeckle/sdk';
const app = express();
app.use(express.json());
const df = new Deckle(process.env.DECKLE_API_KEY!);
// Generate PDF from HTML
app.post('/api/generate', async (req, res) => {
try {
const pdf = await df.generate({
html: req.body.html,
options: req.body.options,
});
res.json(pdf);
} catch (err) {
res.status(500).json({ error: err.message });
}
});
// Generate invoice from template
app.post('/api/invoices/:id/pdf', async (req, res) => {
// Fetch invoice data from your database
const invoice = await getInvoice(req.params.id);
const pdf = await df.fromTemplate({
template: 'tmpl_invoice_v2',
data: {
company: invoice.customerName,
items: invoice.lineItems,
total: invoice.total,
},
});
res.json(pdf);
});
app.listen(3000, () => console.log('Server running on :3000'));