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

Documentation generated on Mon, 19 Sep 2011 14:13:28 +0200 by phpDocumentor 1.4.3