Source for file jResponseTcpdf.class.php

Documentation is available at jResponseTcpdf.class.php

  1. <?php
  2. /**
  3. @package     jelix
  4. @subpackage  core_response
  5. @author      Julien Issler
  6. @contributor Uriel Corfa, Laurent Jouanneau
  7. @copyright   2007 Julien Issler, 2007 Emotic SARL, 2007-2009 Laurent Jouanneau
  8. @link        http://www.jelix.org
  9. @licence     GNU Lesser General Public Licence see LICENCE file or http://www.gnu.org/licenses/lgpl.html
  10. @since 1.0
  11. */
  12.  
  13. /**
  14.  *
  15.  */
  16. require_once (JELIX_LIB_UTILS_PATH.'jTcpdf.class.php');
  17.  
  18. /**
  19. * PDF Response based on TCPDF (http://tcpdf.sourceforge.net)
  20. @package  jelix
  21. @subpackage core_response
  22. @since 1.0
  23. */
  24. class jResponseTcpdf  extends jResponse {
  25.     /**
  26.     * @var string 
  27.     */
  28.     protected $_type = 'tcpdf';
  29.  
  30.     /**
  31.      * the tcpdf object you want to send.
  32.      * @var object 
  33.      */
  34.     public $tcpdf = null;
  35.  
  36.     /**
  37.      * name of the file under which the file will be send to the user
  38.      * @var string 
  39.      */
  40.     public $outputFileName = 'document.pdf';
  41.  
  42.     /**
  43.      * Says if the "save as" dialog appear or not to the user.
  44.      * @var boolean 
  45.      */
  46.     public $doDownload = false;
  47.  
  48.     /**
  49.      * send the PDF to the browser.
  50.      * @return boolean    true if it's ok
  51.      */
  52.     public function output(){
  53.  
  54.         if($this->hasErrors())
  55.             return false;
  56.  
  57.         if(!($this->tcpdf instanceof jTcpdf))
  58.             throw new jException('jelix~errors.reptcpdf.not_a_jtcpdf');
  59.  
  60.         $pdf_data $this->tcpdf->Output('','S');
  61.  
  62.         // headers to disable cache
  63.         $this->addHttpHeader('Cache-Control''public, must-revalidate, max-age=0'false)// HTTP/1.1
  64.         $this->addHttpHeader('Pragma''public'false);
  65.         $this->addHttpHeader('Expires''Sat, 26 Jul 1997 05:00:00 GMT'false)// Date in the past
  66.         $this->addHttpHeader('Last-Modified'gmdate("D, d M Y H:i:s")." GMT"false);
  67.         $this->addHttpHeader('Content-Length'strlen($pdf_data));
  68.         if($this->doDownload){
  69.             $this->addHttpHeader("Content-Type","application/force-download");
  70.             $this->addHttpHeader("Content-Type","application/octet-stream"-1);
  71.             $this->addHttpHeader("Content-Transfer-Encoding""binary");
  72.             $this->addHttpHeader('Content-Disposition','attachment; filename="'.str_replace('"','\"',$this->outputFileName).'";');
  73.         }
  74.         else{
  75.             $this->addHttpHeader('Content-Type''application/pdf');
  76.             $this->addHttpHeader('Content-Disposition''inline; filename="'.str_replace('"','\"',$this->outputFileName).'";');
  77.         }
  78.         $this->sendHttpHeaders();
  79.         echo $pdf_data;
  80.  
  81.         flush();
  82.         return true;
  83.     }
  84.  
  85.     /**
  86.      *
  87.      */
  88.     public function outputErrors(){
  89.         global $gJConfig;
  90.         $this->clearHttpHeaders();
  91.         $this->_httpStatusCode ='500';
  92.         $this->_httpStatusMsg ='Internal Server Error';
  93.         $this->addHttpHeader('Content-Type','text/plain;charset='.$gJConfig->charset,false);
  94.         $this->sendHttpHeaders();
  95.         if($this->hasErrors()){
  96.             foreach$GLOBALS['gJCoord']->errorMessages  as $e)
  97.                echo '['.$e[0].' '.$e[1].'] '.$e[2]." \t".$e[3]." \t".$e[4]."\n";
  98.                if ($e[5])
  99.                   echo $e[5]."\n\n";
  100.         }
  101.         else
  102.             echo "[unknown error]\n";
  103.     }
  104.  
  105.  
  106.     /**
  107.     * Creates the TCPDF object in $this->fpdf
  108.     * @param string $orientation Orientation (portrait/landscape)
  109.     * @param string $unit Page base unit (default to millimeters)
  110.     * @param mixed $format Page size (defaults to A4)
  111.     * @param String $encoding charset encoding;
  112.     */
  113.     public function initPdf($orientation='P'$unit='mm'$format='A4'$encoding=null){
  114.         $this->tcpdf = new jTcpdf($orientation$unit$format$encoding);
  115.     }
  116.  
  117.     /**
  118.     * Transmits calls to non-existent methods to TCPDF (max : 8 params because
  119.     * TCPDF methods never take more than 8 params)
  120.     * @param string $method Method name
  121.     * @param array $attr Method parameters
  122.     * @return mixed Value returned bu FPDF's method
  123.     */
  124.     public function __call($method$attr){
  125.         if ($this->tcpdf !== null)
  126.             return call_user_func_array(array($this->tcpdf$method)$attr );
  127.         else
  128.             throw new jException('jelix~errors.reptcpdf.not_a_jtcpdf');
  129.     }
  130.  
  131. }

Documentation generated on Thu, 19 Sep 2013 00:06:58 +0200 by phpDocumentor 1.4.3