Skip to content

bdlogicalerror/JasperPHP

 
 

Repository files navigation

JasperPHP

Project to generate reports created with the JasperSoft Studio application
Library pure PHP, without a java server or Jasper Server

Supported tags/components

TAG/component Status TAG/component Status
Basic elements
Text Field OK Static Text OK
Image OK Break OK
Rectangle OK Line OK
SubReport* OK Barcode OK
Composite elements
Page Number OK Total Pages OK
Corrent Date OK Page X of Y OK
Bands
Title OK Page Header
Detail OK Column Header OK
Column Footer OK Page Footer OK
Background OK
* Subreports are supported recursively and unlimited

Other features

  • active record

  • Generic sample

    <?php
    use JasperPHP\Report;
    use JasperPHP\Report2XLS;
    use JasperPHP\ado\TTransaction;
    use JasperPHP\ado\TLoggerHTML;
    
    //use PHPexcel as PHPexcel;
    /**
    * classe TJasper
    *
    * @author   Rogerio Muniz de Castro <rogerio@quilhasoft.net>
    * @version  2015.03.11
    * @access   restrict
    * 
    * 2015.03.11 -- create
    **/
    class TJasper
    {
        private $report;
        private $type;
    
        /**
        * method __construct()
        * 
        * @param $jrxml = a source xmlr filename
        * @param $param = a array whith params
        */
        public function __construct($jrxml,array $param)
        {
            $xmlFile=  $jrxml;
            $this->type = (array_key_exists('type',$param))?$param['type']:'pdf';
            error_reporting(0);
            switch ($this->type)
            {
                case 'pdf': 
                    $this->report =new JasperPHP\Report($xmlFile,$param);
                    JasperPHP\Pdf::prepare($this->report);
                    break;
                case 'xls':
                    JasperPHP\Excel::prepare();
                    $this->report =new JasperPHP\Report2XLS($xmlFile,$param);
                    
                    break;
            }
        }
        
        /**
        * method outpage()
        * 
        * @param $type = a type of output. ALERT: xls is experimental
        */
    
        public function outpage($type='pdf'){
            $this->report->generate();
            $this->report->out();
            switch ($this->type)
            {
                case 'pdf':
                    $pdf  = JasperPHP\Pdf::get();
                    $pdf->Output('Relatorio.pdf',"I");
                    break;
                case 'xls':
                    header('Content-Type: application/vnd.ms-excel');
                    header('Content-Disposition: attachment;filename="01simple.xls"');
                    header('Cache-Control: max-age=0');
                    // If you're serving to IE 9, then the following may be needed
                    header('Cache-Control: max-age=1');
                    // If you're serving to IE over SSL, then the following may be needed
                    header ('Expires: Mon, 26 Jul 1997 05:00:00 GMT'); // Date in the past
                    header ('Last-Modified: '.gmdate('D, d M Y H:i:s').' GMT'); // always modified
                    header ('Cache-Control: cache, must-revalidate'); // HTTP/1.1
                    header ('Pragma: public'); // HTTP/1.0
                    $objWriter = PHPExcel_IOFactory::createWriter($this->report->wb, 'Excel5');
                    $objWriter->save('php://output');
                break;
            }
            
        }
        /**
        * method setVariable()
         * insert variable into report after output
        * 
        * @param $name = name of variable
        * @param $value = value of variable
        */
        public function setVariable($name,$value){
            $this->report->arrayVariable[$name]['initialValue'] = $value ;
        }
    }
    require('autoloader.php') ;
    require('../../tecnickcom/tcpdf/tcpdf.php'); // point to tcpdf class previosly instaled , 
                                                // on composer instalation is not necessaty 
    
    TTransaction::open('dev');
    $jasper = new TJasper('template.jrxml',$_GET);
    $jasper->outpage();
    ?>

    Requirements

    • PHP 5.2+
    • "tecnickcom/tcpdf":"6.2.*"

    How to use this sample

    Define database conections params into file config\dev.ini
    View file src\ado\TConection.php to define database type
    Sample URL:
    http://localhost/vendor/quilhasoft/JasperPHP/TJasper.class.php?param1=foo&param2=bar
    URL params passed into URL are the params defined into xmlr file.

    Using composer

    Add "quilhasoft/jasperphp":"dev-master" into your composer config file and update/install

    Live samples

    • A basic test: Here
    • A burn test, 201 pages, hosted in a default hostgator server: Here
    • Brasilian payment method "boleto" in "carne":Here
    • Brasilian payment method "boleto" in A4 :Here
      ** Brasilian boleto project disponible in QuilhaSoft/JasperPHP-OpenBoleto.

    License

    • MIT License

    About

    Pure PHP project to read JRXML files made in "JasperSoft Studio" and generate reports in PDF

    Resources

    License

    Stars

    Watchers

    Forks

    Releases

    No releases published

    Packages

    No packages published

    Languages

    • PHP 100.0%