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 Jouannneau
  7. @copyright   2007 Julien Issler, 2007 Emotic SARL, 2007 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.         header("Cache-Control: public, must-revalidate, max-age=0")// HTTP/1.1
  63.         header("Pragma: public");
  64.         header("Expires: Sat, 26 Jul 1997 05:00:00 GMT")// Date in the past
  65.         header("Last-Modified: ".gmdate("D, d M Y H:i:s")." GMT");
  66.         header('Content-Length: '.strlen($pdf_data));
  67.         if($this->doDownload){
  68.             header("Content-Type: application/force-download");
  69.             header("Content-Type: application/octet-stream"false);
  70.             header("Content-Transfer-Encoding: binary");
  71.             header('Content-Disposition: attachment; filename="'.str_replace('"','\"',$this->outputFileName).'";');
  72.             echo $pdf_data;
  73.         }
  74.         else{
  75.             header('Content-Type: application/pdf');
  76.             header('Content-Disposition: inline; filename="'.str_replace('"','\"',$this->outputFileName).'";');
  77.             echo $pdf_data;
  78.         }
  79.  
  80.         flush();
  81.         return true;
  82.     }
  83.  
  84.     /**
  85.      *
  86.      */
  87.     public function outputErrors(){
  88.         global $gJConfig;
  89.         $this->clearHttpHeaders();
  90.         $this->_httpStatusCode ='500';
  91.         $this->_httpStatusMsg ='Internal Server Error';
  92.         $this->addHttpHeader('Content-Type','text/plain;charset='.$gJConfig->charset,false);
  93.         $this->sendHttpHeaders();
  94.         if($this->hasErrors()){
  95.             foreach$GLOBALS['gJCoord']->errorMessages  as $e)
  96.                echo '['.$e[0].' '.$e[1].'] '.$e[2]." \t".$e[3]." \t".$e[4]."\n";
  97.         }
  98.         else
  99.             echo "[unknown error]\n";
  100.     }
  101.  
  102.  
  103.     /**
  104.     * Creates the TCPDF object in $this->fpdf
  105.     * @param string $orientation Orientation (portrait/landscape)
  106.     * @param string $unit Page base unit (default to millimeters)
  107.     * @param mixed $format Page size (defaults to A4)
  108.     * @param String $encoding charset encoding;
  109.     */
  110.     public function initPdf($orientation='P'$unit='mm'$format='A4'$encoding=null){
  111.         $this->tcpdf = new jTcpdf($orientation$unit$format$encoding);
  112.     }
  113.  
  114.     /**
  115.     * Transmits calls to non-existent methods to TCPDF (max : 8 params because
  116.     * TCPDF methods never take more than 8 params)
  117.     * @param string $method Method name
  118.     * @param array $attr Method parameters
  119.     * @return mixed Value returned bu FPDF's method
  120.     */
  121.     public function __call($method$attr){
  122.         if ($this->tcpdf !== null)
  123.             return call_user_func_array(array($this->tcpdf$method)$attr );
  124.         else
  125.             throw new jException('jelix~errors.reptcpdf.not_a_jtcpdf');
  126.     }
  127.  
  128. }

Documentation generated on Thu, 22 Mar 2012 22:16:52 +0100 by phpDocumentor 1.4.3