<?php /********************************************************************* class.pdf.php Ticket PDF Export Peter Rotich <peter@osticket.com> Copyright (c) 2006-2013 osTicket http://www.osticket.com Released under the GNU General Public License WITHOUT ANY WARRANTY. See LICENSE.TXT for details. vim: expandtab sw=4 ts=4 sts=4: **********************************************************************/ define('THIS_DIR', str_replace('\\', '/', Misc::realpath(dirname(__FILE__))) . '/'); //Include path.. require_once(INCLUDE_DIR.'mpdf/mpdf.php'); class mPDFWithLocalImages extends mPDF { function WriteHtml($html) { static $filenumber = 1; $args = func_get_args(); $self = $this; $images = $cids = array(); // Try and get information for all the files in one query if (preg_match_all('/"cid:([\w._-]{32})"/', $html, $cids)) { foreach (AttachmentFile::objects() ->filter(array('key__in' => $cids[1])) as $file ) { $images[strtolower($file->getKey())] = $file; } } $args[0] = preg_replace_callback('/"cid:([\w.-]{32})"/', function($match) use ($self, $images, &$filenumber) { if (!($file = @$images[strtolower($match[1])])) return $match[0]; $key = "__attached_file_".$filenumber++; $self->{$key} = $file->getData(); return 'var:'.$key; }, $html ); return call_user_func_array(array('parent', 'WriteHtml'), $args); } } class Ticket2PDF extends mPDFWithLocalImages { var $includenotes = false; var $pageOffset = 0; var $ticket = null; function Ticket2PDF($ticket, $psize='Letter', $notes=false) { global $thisstaff; $this->ticket = $ticket; $this->includenotes = $notes; parent::__construct('', $psize); $this->_print(); } function getTicket() { return $this->ticket; } function _print() { global $thisstaff, $thisclient, $cfg; if(!($ticket=$this->getTicket())) return; ob_start(); if ($thisstaff) include STAFFINC_DIR.'templates/ticket-print.tmpl.php'; elseif ($thisclient) include CLIENTINC_DIR.'templates/ticket-print.tmpl.php'; else return; $html = ob_get_clean(); $this->WriteHtml($html, 0, true, true); } } ?>