diff --git a/server/src/lib/pdf.ts b/server/src/lib/pdf.ts index aaec709..510671d 100644 --- a/server/src/lib/pdf.ts +++ b/server/src/lib/pdf.ts @@ -1,8 +1,15 @@ -import puppeteer from "puppeteer"; +import puppeteer, { PaperFormat } from "puppeteer"; import { env } from "../config/env.js"; -export async function renderPdf(html: string) { +interface PdfOptions { + format?: PaperFormat; + width?: string; + height?: string; + margin?: { top?: string; right?: string; bottom?: string; left?: string }; +} + +export async function renderPdf(html: string, options?: PdfOptions) { const browser = await puppeteer.launch({ executablePath: env.PUPPETEER_EXECUTABLE_PATH, headless: true, @@ -14,7 +21,10 @@ export async function renderPdf(html: string) { await page.setContent(html, { waitUntil: "networkidle0" }); const pdf = await page.pdf({ - format: "A4", + format: options?.width || options?.height ? undefined : (options?.format || "A4"), + width: options?.width, + height: options?.height, + margin: options?.margin, printBackground: true, preferCSSPageSize: true, }); diff --git a/server/src/modules/documents/router.ts b/server/src/modules/documents/router.ts index 3964de6..f5658d7 100644 --- a/server/src/modules/documents/router.ts +++ b/server/src/modules/documents/router.ts @@ -219,7 +219,7 @@ function buildShippingLabelPdf(options: { - `); + `, { width: "4in", height: "6in", margin: { top: "0", right: "0", bottom: "0", left: "0" } }); } function buildBillOfLadingPdf(options: {