Got another spare time, so, another simple tips for you. Last post I already show how to easily integrate PHPExcel in CodeIgniter so you’ll be able to create downloadable XLS report easily. We will complete our CodeIgniter reporting capability by adding PDF output feature. (Yeah, I know PHPExcel can also create a PDF output, but it sucks big, the table is badly formatted)
Why ezPDF (now pdf-php)?
Well, there’s already a guide for integrating TCPDF and DOMPDF into CodeIgniter so I present you another option by using ezPDF (pdf-php)
What’s ezPDF not good for?
Don’t use ezPDF if you are planning to use CSS or HTML codes to style your PDF. As far as I know, ezPDF does not offer easy way to parse CSS or HTML (more like it doesn’t support it). I’m not saying that you can’t style your text, in fact, some primitive text styling is supported, such as: <b>,<i>,<u>. Please read ezPDF readme file to comprehend what ezPDF has and hasn’t.
What’s ezPDF good at?
Graphic functionality, drawing (line, curve, ellipse, box, polygon), advance page numbering, paging function, automatic table-of-content generation. (On my test, ezPDF/pdf-php failed to insert a PNG image with transparency/alpha-channel rendering corrupted PDF file)
Your application/third_party/ folder will look like this
1 2 3 4 5 6 7 8 9 10 11 12 13 | <?php if ( ! defined('BASEPATH')) exit('No direct script access allowed'); require_once(APPPATH."/third_party/pdf-php/class.ezpdf.php"); class Pdf extends Cezpdf { public function __construct($params) { if (is_array($params)) { parent::__construct($params['paper'],$params['orientation'], $params['type'], $params['options']); } else { parent::__construct(); } } } |
Your application/libraries/ folder will look like this:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 | public function index() { error_reporting(0); //suppress some error message $parameters=array( 'paper'=>'letter', //paper size 'orientation'=>'landscape', //portrait or lanscape 'type'=>'color', //paper type: none|color|colour|image 'options'=>array(0.6, 0.9, 0.8) //I specified the paper as color paper, so, here's the paper color (RGB) ); $this->load->library('pdf', $parameters); //load ezPdf library with above parameters $this->pdf->selectFont(APPPATH.'/third_party/pdf-php/fonts/Helvetica.afm'); //choose font, watch out for the dont location! $this->pdf->ezText('Hello World!',20); //insert text with size //get data from database (note: this should be on 'models' but mehhh..), we'll try creating table using ezPdf $q=$this->db->query('SELECT id, username, role FROM administrator'); //this data will be presented as table in PDF $data_table=array(); foreach ($q->result_array() as $row) { $data_table[]=$row; } //this one is for table header $column_header=array( 'id'=>'User ID', 'username'=>'User Name', 'role'=>'Role' ); $this->pdf->ezTable($data_table, $column_header); //generate table $this->pdf->ezSetY(480); //set vertical position $this->pdf->ezImage(base_url('images/test_noalpha.png'), 0, 100, 'none', 'center'); //insert image $this->pdf->ezStream(array('Content-Disposition'=>'just_random_filename.pdf')); //force user to download the file as 'just_random_filename.pdf' } |
Example PDF output will be like this:
On above example, I show you how to:
Once again, for more ezPDF/pdf-php features, please read the readme on your ezPDF/pdf-php download.
hi
I have used this library with my application. I’m having a problem. when i use utf-8 fonts (Hindi fonts). it is showing some garbage type of data in that column. (Data Comming from mysql table, showing properly on page).
Will you please help me to fix issue?
I can’t. I don’t know Hindi.