From 014216fdb05560abd79551381757db252a22c5b7 Mon Sep 17 00:00:00 2001
From: Jared Hancock <jared@osticket.com>
Date: Fri, 4 Oct 2013 21:57:03 +0000
Subject: [PATCH] Change PDF print to show custom logo

If the GD extension is not available for the PHP installation, then use a
copy of the default client-site logo with the alpha channel removed.
---
 include/class.pdf.php       |  41 ++++++++++++++++++++++++++++--------
 include/fpdf/print-logo.png | Bin 11684 -> 10486 bytes
 2 files changed, 32 insertions(+), 9 deletions(-)

diff --git a/include/class.pdf.php b/include/class.pdf.php
index ba020c2bc..7fea901eb 100644
--- a/include/class.pdf.php
+++ b/include/class.pdf.php
@@ -48,23 +48,46 @@ class Ticket2PDF extends FPDF
         return $this->ticket;
     }
 
+    function getLogoFile() {
+        global $ost;
+
+        if (!function_exists('imagecreatefromstring')
+                || (!($logo = $ost->getConfig()->getClientLogo()))) {
+            return INCLUDE_DIR.'fpdf/print-logo.png';
+        }
+
+        $tmp = tempnam("", 'pdf') . '.jpg';
+        $img = imagecreatefromstring($logo->getData());
+        // Handle transparent images with white background
+        $img2 = imagecreatetruecolor(imagesx($img), imagesy($img));
+        $white = imagecolorallocate($img2, 255, 255, 255);
+        imagefill($img2, 0, 0, $white);
+        imagecopy($img2, $img, 0, 0, 0, 0, imagesx($img), imagesy($img));
+        imagejpeg($img2, $tmp);
+        return $tmp;
+    }
+
 	//report header...most stuff are hard coded for now...
 	function Header() {
         global $cfg;
 
 		//Common header
-        $this->Ln(2);
+        $logo = $this->getLogoFile();
+		$this->Image($logo, null, $this->tMargin, 0, 20);
+        if (strpos($logo, INCLUDE_DIR) === false)
+            unlink($logo);
 		$this->SetFont('Times', 'B', 16);
-		$this->Image(FPDF_DIR . 'print-logo.png', null, 10, 0, 20);
-		$this->SetX(200, 15);
-		$this->Cell(0, 15, $cfg->getTitle(), 0, 1, 'R', 0);
-		//$this->SetY(40);
+		$this->SetY($this->tMargin + 20);
         $this->SetX($this->lMargin);
-        $this->Cell(0, 3, '', "B", 2, 'L');
+        $this->Cell(0, 0, '', "B", 2, 'L');
+		$this->Ln(1);
+        $this->SetFont('Arial', 'B',10);
+        $this->Cell(0, 5, $cfg->getTitle(), 0, 0, 'L');
         $this->SetFont('Arial', 'I',10);
-        $this->Cell(0, 5, 'Generated on '.Format::date($cfg->getDateTimeFormat(), Misc::gmtime(), $_SESSION['TZ_OFFSET'], $_SESSION['TZ_DST']), 0, 0, 'L');
-        $this->Cell(0, 5, 'Date & Time based on GMT '.$_SESSION['TZ_OFFSET'], 0, 1, 'R');
-		$this->Ln(10);
+        $this->Cell(0, 5, Format::date($cfg->getDateTimeFormat(), Misc::gmtime(),
+            $_SESSION['TZ_OFFSET'], $_SESSION['TZ_DST'])
+            .' GMT '.$_SESSION['TZ_OFFSET'], 0, 1, 'R');
+		$this->Ln(5);
 	}
 
 	//Page footer baby
diff --git a/include/fpdf/print-logo.png b/include/fpdf/print-logo.png
index 6526ebe0a15f393382e0339b38cef8422d7ff471..1d8b7d61d2cda843409c22cc19db77aafd5981ac 100644
GIT binary patch
literal 10486
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
U`s{Z$QlJHmp00i_>zopr0DR*9{Qv*}

literal 11684
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
B9ohf@

-- 
GitLab