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-2010 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->tcpdf instanceof jTcpdf))
  55.             throw new jException('jelix~errors.reptcpdf.not_a_jtcpdf');
  56.  
  57.         $pdf_data $this->tcpdf->Output('','S');
  58.  
  59.         // headers to disable cache
  60.         $this->addHttpHeader('Cache-Control''public, must-revalidate, max-age=0'false)// HTTP/1.1
  61.         $this->addHttpHeader('Pragma''public'false);
  62.         $this->addHttpHeader('Expires''Sat, 26 Jul 1997 05:00:00 GMT'false)// Date in the past
  63.         $this->addHttpHeader('Last-Modified'gmdate("D, d M Y H:i:s")." GMT"false);
  64.         $this->addHttpHeader('Content-Length'strlen($pdf_data));
  65.         if($this->doDownload){
  66.             $this->addHttpHeader("Content-Type","application/force-download");
  67.             $this->addHttpHeader("Content-Type","application/octet-stream"-1);
  68.             $this->addHttpHeader("Content-Transfer-Encoding""binary");
  69.             $this->addHttpHeader('Content-Disposition','attachment; filename="'.str_replace('"','\"',$this->outputFileName).'";');
  70.         }
  71.         else{
  72.             $this->addHttpHeader('Content-Type''application/pdf');
  73.             $this->addHttpHeader('Content-Disposition''inline; filename="'.str_replace('"','\"',$this->outputFileName).'";');
  74.         }
  75.         $this->sendHttpHeaders();
  76.         echo $pdf_data;
  77.  
  78.         flush();
  79.         return true;
  80.     }
  81.  
  82.     /**
  83.     * Creates the TCPDF object in $this->tcpdf
  84.     * @param string $orientation Orientation (portrait/landscape)
  85.     * @param string $unit Page base unit (default to millimeters)
  86.     * @param mixed $format Page size (defaults to A4)
  87.     * @param String $encoding charset encoding;
  88.     */
  89.     public function initPdf($orientation='P'$unit='mm'$format='A4'$encoding=null){
  90.         $this->tcpdf = new jTcpdf($orientation$unit$format$encoding);
  91.     }
  92.  
  93.     /**
  94.     * Transmits calls to non-existent methods to TCPDF (max : 8 params because
  95.     * TCPDF methods never take more than 8 params)
  96.     * @param string $method Method name
  97.     * @param array $attr Method parameters
  98.     * @return mixed Value returned by TCPDF's method
  99.     */
  100.     public function __call($method$attr){
  101.         if ($this->tcpdf !== null)
  102.             return call_user_func_array(array($this->tcpdf$method)$attr );
  103.         else
  104.             throw new jException('jelix~errors.reptcpdf.not_a_jtcpdf');
  105.     }
  106. }

Documentation generated on Wed, 24 Sep 2014 22:01:43 +0200 by phpDocumentor 1.4.3