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)
- OK, without more a do, download ezPDF (pdf-php) from sourceforge: http://sourceforge.net/projects/pdf-php/
- Create pdf-php folder in your application/third_party/ folder (let’s separate it from PHPExcel). Extract fonts folder, class.pdf.php and class.ezpdf.php inside your pdf-php folder.
- Create Pdf.php inside your application/libraries/. We will name our library as Pdf class. Here’s the full library code:
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(); } } } |
- It’s done. This is example on how to use our new ezPDF/pdf-php library (this code is inside a function within a controller):
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' } |
On above example, I show you how to:
- call the library, select paper size, paper orientation, paper color
- select font type, and font size
- insert a PNG image into the PDF
- create a table from database
- finally, force user to download the PDF file with specific file name
dk123 tomsscarpe,lasportivabootsnz,demonia shoes,lululemon leggings,la sportiva ireland,dr martens dames,demonia boots,toms greece,toms ayakkabı yn215
ReplyDelete