From da6d744208ee91c6beabd6e1bd735d17c951e393 Mon Sep 17 00:00:00 2001 From: "mihailo.vojinovic" Date: Wed, 11 Feb 2026 16:56:14 +0100 Subject: Add generate invlice server action --- next.config.ts | 1 + src/lib/generate.ts | 21 +++++++++++++++++++++ 2 files changed, 22 insertions(+) create mode 100644 src/lib/generate.ts 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 { + 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); + }); +} -- cgit v1.3.1