From 2c506711fb120c2c1b1278debc3c9a24bc02c613 Mon Sep 17 00:00:00 2001 From: Dan Gowans Date: Tue, 29 Apr 2025 14:57:07 -0400 Subject: [PATCH] add id to pdf file name --- handlers/print-get/pdf.js | 12 +++++++++--- handlers/print-get/pdf.ts | 29 +++++++++++++++++++++-------- 2 files changed, 30 insertions(+), 11 deletions(-) diff --git a/handlers/print-get/pdf.js b/handlers/print-get/pdf.js index 867dac6c..60ef63ad 100644 --- a/handlers/print-get/pdf.js +++ b/handlers/print-get/pdf.js @@ -20,7 +20,13 @@ export async function handler(request, response, next) { const reportData = await getReportData(printConfig, request.query); const reportPath = path.join('views', 'print', 'pdf', `${printName}.ejs`); function pdfCallbackFunction(pdf) { - response.setHeader('Content-Disposition', `${attachmentOrInline}; filename=${camelcase(printConfig?.title ?? 'export')}.pdf`); + let exportFileNameId = ''; + if ((printConfig?.params.length ?? 0) > 0) { + // eslint-disable-next-line @typescript-eslint/no-base-to-string, @typescript-eslint/restrict-template-expressions + exportFileNameId = `-${request.query[printConfig?.params[0] ?? '']}`; + } + const exportFileName = `${camelcase(printConfig?.title ?? 'export')}${exportFileNameId}.pdf`; + response.setHeader('Content-Disposition', `${attachmentOrInline}; filename=${exportFileName}`); response.setHeader('Content-Type', 'application/pdf'); response.send(pdf); } @@ -32,8 +38,8 @@ export async function handler(request, response, next) { } const pdf = await convertHTMLToPDF(ejsData, { format: 'letter', - printBackground: true, - preferCSSPageSize: true + preferCSSPageSize: true, + printBackground: true }, { usePackagePuppeteer: true }); diff --git a/handlers/print-get/pdf.ts b/handlers/print-get/pdf.ts index f8580691..888cdf8a 100644 --- a/handlers/print-get/pdf.ts +++ b/handlers/print-get/pdf.ts @@ -53,9 +53,18 @@ export async function handler( const reportPath = path.join('views', 'print', 'pdf', `${printName}.ejs`) function pdfCallbackFunction(pdf: Buffer): void { + let exportFileNameId = '' + + if ((printConfig?.params.length ?? 0) > 0) { + // eslint-disable-next-line @typescript-eslint/no-base-to-string, @typescript-eslint/restrict-template-expressions + exportFileNameId = `-${request.query[printConfig?.params[0] ?? '']}` + } + + const exportFileName = `${camelcase(printConfig?.title ?? 'export')}${exportFileNameId}.pdf` + response.setHeader( 'Content-Disposition', - `${attachmentOrInline}; filename=${camelcase(printConfig?.title ?? 'export')}.pdf` + `${attachmentOrInline}; filename=${exportFileName}` ) response.setHeader('Content-Type', 'application/pdf') @@ -73,13 +82,17 @@ export async function handler( return } - const pdf = await convertHTMLToPDF(ejsData, { - format: 'letter', - printBackground: true, - preferCSSPageSize: true - }, { - usePackagePuppeteer: true - }) + const pdf = await convertHTMLToPDF( + ejsData, + { + format: 'letter', + preferCSSPageSize: true, + printBackground: true + }, + { + usePackagePuppeteer: true + } + ) pdfCallbackFunction(Buffer.from(pdf)) }