@jackgreen2018/gift-certificate
v1.0.1
Published
Generate professional gift certificates and vouchers as PDFs — runs in browser and Node.js via Rust/WASM. No server required.
Readme
@jackgreen2018/gift-certificate
Generate professional gift certificates and vouchers as PDFs — runs in browser and Node.js via Rust/WASM. No server required.
Install
npm install @jackgreen2018/gift-certificateUsage
import { generateCertificate, generateBatch, merge, split } from '@jackgreen2018/gift-certificate';
// Single certificate
const pdf = await generateCertificate({
recipient_name: "Jane Doe",
sender_name: "Acme Corp",
amount: 50.00,
message: "Thank you for your support!",
expiry_date: "2027-12-31",
business_name: "Acme Corporation",
template: "elegant" // elegant | classic | modern
});
// Batch of certificates
const batch = await generateBatch([
{ recipient_name: "Alice", amount: 25.00, ... },
{ recipient_name: "Bob", amount: 50.00, ... },
]);
// Merge / split (reuses pdf-engine)
const merged = await merge([pdf1, pdf2]);
const parts = await split(pdf, [0, 1, 2]);Template Variants
| Variant | Color Scheme | |----------|-----------------------| | elegant | Purple / gold accent | | classic | Gold / brown accent | | modern | Teal / blue accent |
Benchmark
Measures average over 100 iterations (single) / 10 iterations (batch of 10) on a standard development machine.
| Operation | Rust/WASM | pdf-lib | Speedup | |------------------|-----------|---------|---------| | Single cert | 0.12 ms | 1.18 ms | 10.12x | | Batch (10 certs) | 2.08 ms | 10.01 ms| 4.82x |
API
initialize()— async init, call once before other functionsgenerateCertificate(options) -> Uint8Array— generates a single gift certificate PDFgenerateBatch(certificates) -> Uint8Array— generates multiple certificates (one per page)merge(pdfBuffers) -> Uint8Array— merges multiple PDFs into onesplit(buffer, pages) -> Uint8Array[]— splits a PDF by page indices
License
MIT
