From f1e3bc95315469eb95261b5653bfd03c5a13c1c9 Mon Sep 17 00:00:00 2001 From: snipe Date: Mon, 6 Oct 2025 15:02:53 +0100 Subject: [PATCH] Fixed #17940 - use base64encoding on images in acceptance PDF --- .../Controllers/Account/AcceptanceController.php | 12 +++++++++--- app/Models/CheckoutAcceptance.php | 4 ++-- 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/app/Http/Controllers/Account/AcceptanceController.php b/app/Http/Controllers/Account/AcceptanceController.php index 735946c3f5..6270fad9d9 100644 --- a/app/Http/Controllers/Account/AcceptanceController.php +++ b/app/Http/Controllers/Account/AcceptanceController.php @@ -77,7 +77,6 @@ class AcceptanceController extends Controller $acceptance = CheckoutAcceptance::find($id); $assigned_user = User::find($acceptance->assigned_to_id); $settings = Setting::getSettings(); - $path_logo = ''; $sig_filename=''; @@ -138,6 +137,13 @@ class AcceptanceController extends Controller } + // Convert PDF logo to base64 for TCPDF + // This is needed for TCPDF to properly embed the image if it's a png and the cache isn't writable + $encoded_logo = null; + if ($settings->acceptance_pdf_logo) { + $encoded_logo = base64_encode(file_get_contents(public_path() . '/uploads/' . $settings->acceptance_pdf_logo)); + } + // Get the data array ready for the notifications and PDF generation $data = [ 'item_tag' => $item->asset_tag, @@ -153,8 +159,8 @@ class AcceptanceController extends Controller 'assigned_to' => $assigned_user->display_name, 'site_name' => $settings->site_name, 'company_name' => $item->company?->name?? $settings->site_name, - 'signature' => ($sig_filename) ? storage_path() . '/private_uploads/signatures/' . $sig_filename : null, - 'logo' => ($settings->acceptance_pdf_logo) ? public_path() . '/uploads/' . $settings->acceptance_pdf_logo : null, + 'signature' => (($sig_filename && array_key_exists('1', $encoded_image))) ? $encoded_image[1] : null, + 'logo' => ($encoded_logo) ?? null, 'date_settings' => $settings->date_display_format, 'admin' => auth()->user()->present()?->fullName, 'qty' => $acceptance->qty ?? 1, diff --git a/app/Models/CheckoutAcceptance.php b/app/Models/CheckoutAcceptance.php index b5c5ee9efe..7553202025 100644 --- a/app/Models/CheckoutAcceptance.php +++ b/app/Models/CheckoutAcceptance.php @@ -184,7 +184,7 @@ class CheckoutAcceptance extends Model $pdf->AddPage(); if ($data['logo'] != null) { - $pdf->writeHTML('', true, 0, true, 0, ''); + $pdf->writeHTML('', true, 0, true, 0, ''); } else { $pdf->writeHTML('

'.$data['site_name'].'



', true, 0, true, 0, 'C'); } @@ -230,7 +230,7 @@ class CheckoutAcceptance extends Model $pdf->Ln(); if ($data['signature'] != null) { - $pdf->writeHTML('', true, 0, true, 0, ''); + $pdf->writeHTML('', true, 0, true, 0, ''); $pdf->writeHTML('
', true, 0, true, 0, ''); $pdf->writeHTML(e($data['assigned_to']), true, 0, true, 0, 'C'); $pdf->Ln();