diff options
| author | mihailo.vojinovic <mihailonvojinovic@gmail.com> | 2026-02-11 16:56:14 +0100 |
|---|---|---|
| committer | mihailo.vojinovic <mihailonvojinovic@gmail.com> | 2026-02-11 16:56:14 +0100 |
| commit | da6d744208ee91c6beabd6e1bd735d17c951e393 (patch) | |
| tree | 8d9f3c22d66078c5838560c342d3f132af31d9bf | |
| parent | 813454a9ef543f55b7dafb717660c4cbbf8d22b2 (diff) | |
| download | invoice-da6d744208ee91c6beabd6e1bd735d17c951e393.tar.gz invoice-da6d744208ee91c6beabd6e1bd735d17c951e393.zip | |
Add generate invlice server action
| -rw-r--r-- | next.config.ts | 1 | ||||
| -rw-r--r-- | src/lib/generate.ts | 21 |
2 files changed, 22 insertions, 0 deletions
diff --git a/next.config.ts b/next.config.ts index e9ffa30..5dd3660 100644 --- a/next.config.ts +++ b/next.config.ts @@ -2,6 +2,7 @@ import type { NextConfig } from "next"; const nextConfig: NextConfig = { /* config options here */ + serverExternalPackages: ["pdfkit"], }; export default nextConfig; diff --git a/src/lib/generate.ts b/src/lib/generate.ts new file mode 100644 index 0000000..4787f56 --- /dev/null +++ b/src/lib/generate.ts @@ -0,0 +1,21 @@ +"use server"; + +import { Invoice } from "@/models/invoice"; +import PDFDocument from "pdfkit"; +import blobStream from "blob-stream"; + +export async function generateInvoice(invoice: Invoice): Promise<Blob> { + const doc = new PDFDocument(); + const stream = doc.pipe(blobStream()); + + doc.text("Invoice from " + invoice.from); + + doc.end(); + return new Promise((resolve, reject) => { + stream.on("finish", () => { + const blob = stream.toBlob(); + resolve(blob); + }); + stream.on("error", reject); + }); +} |
