From 46315ac5ed692bb80eecb2f3c206972f178f4500 Mon Sep 17 00:00:00 2001 From: DevSoftTech Server Date: Mon, 8 Jun 2026 23:20:06 +0530 Subject: [PATCH] Fix Chrome PDF display issue by adding Content-Length, proper filename encoding, Cache-Control, and Accept-Ranges headers --- app/Controllers/Ipd_discharge.php | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/app/Controllers/Ipd_discharge.php b/app/Controllers/Ipd_discharge.php index 20cc88d..6acca8a 100644 --- a/app/Controllers/Ipd_discharge.php +++ b/app/Controllers/Ipd_discharge.php @@ -6170,7 +6170,10 @@ class Ipd_discharge extends BaseController }); return $this->response ->setHeader('Content-Type', 'application/pdf') - ->setHeader('Content-Disposition', 'inline; filename="' . $fileName . '"') + ->setHeader('Content-Length', (string) strlen($pdfBinary)) + ->setHeader('Content-Disposition', 'inline; filename="' . rawurlencode($fileName) . '"; filename*=UTF-8\'\''. rawurlencode($fileName)) + ->setHeader('Cache-Control', 'private, max-age=0, must-revalidate') + ->setHeader('Accept-Ranges', 'bytes') ->setBody($pdfBinary); } catch (\Throwable $e) { log_message('error', 'PDF generation failed for IPD {ipd}: {msg}', [ @@ -6213,7 +6216,10 @@ class Ipd_discharge extends BaseController return $this->response ->setHeader('Content-Type', 'application/pdf') - ->setHeader('Content-Disposition', 'inline; filename="' . $fileName . '"') + ->setHeader('Content-Length', (string) strlen($pdfBinary)) + ->setHeader('Content-Disposition', 'inline; filename="' . rawurlencode($fileName) . '"; filename*=UTF-8\'\''. rawurlencode($fileName)) + ->setHeader('Cache-Control', 'private, max-age=0, must-revalidate') + ->setHeader('Accept-Ranges', 'bytes') ->setBody($pdfBinary); } catch (\Throwable $fallbackError) { log_message('error', 'Discharge PDF fallback failed for IPD {ipd}: {msg}', [ @@ -6262,7 +6268,10 @@ class Ipd_discharge extends BaseController return $this->response ->setHeader('Content-Type', 'application/pdf') - ->setHeader('Content-Disposition', 'inline; filename="' . $fileName . '"') + ->setHeader('Content-Length', (string) strlen($pdfBinary)) + ->setHeader('Content-Disposition', 'inline; filename="' . rawurlencode($fileName) . '"; filename*=UTF-8\'\''. rawurlencode($fileName)) + ->setHeader('Cache-Control', 'private, max-age=0, must-revalidate') + ->setHeader('Accept-Ranges', 'bytes') ->setBody($pdfBinary); } catch (\Throwable $ultimateError) { log_message('error', 'Discharge PDF ultimate fallback failed for IPD {ipd}: {msg}', [