Creació de documents PDF dinàmics des de PHP

Amb aquest xicotet article vull explicar breument la meua experiència amb la creació de documents PDF en línia que llegeixen la informació de la base de dades i la mostren en un elegant fitxer PDF, així d'aquesta manera el client final el pot guardar o imprimir còmodament per tal de llegir-ho al sofà de casa :-)

Realment és prou fàcil, es tracta de crear una pàgina en PHP amb les teues funcions, les teues variables, etc. i fent un 'require' de la classe PHP que vullgues i afegint la seua sintàxi concreta de generació del fitxer. En un parell d'horetes pots aconseguir fàcilment crear-te un document dinàmic.

Per fer documents PDF tenim algunes classes PHP molt interesants, com la FPDF, un fork anomenat UFPDF i un altre anomenat TCPDF. Jo vaig perdre un parell de dies amb la primera, FPDF, i he de dir que funciona molt bé i és prou ràpida... a més a més la curva d'aprenentatge no és gens accentuada. Però vaig adonar-me que no té support pel UTF-8 i ahí em vaig donar de morros perquè el meu projecte du, des de la base de dades MySQL, una codificació UTF-8. Total, que amb FPDF el meu document enlloc de mostrar "ŝ", "ĝ" o "ŭ" em mostrava "?", "?" i "?".

Llegint per la web vaig descobrir el fork UFPDF desenvolupada per un drupalero del que ja havia llegit el seu bloc, i vaig estar avançant.. però... tampoc vaig aconseguir crear documents en format PDF mostrant lletres amb barret... i per això finalment vaig descarregar TCPDF i ho vaig aconseguir.

Les classes UFPDF i TCPDF tenen una sintaxi igual que FPDF, així que no cal tornar a estudiar-les.

require('fpdf16/fpdf.php');

class PDF extends FPDF {
//Page header                                                                                                                 
function Header()
{
    //Logo del document                                                                                                                    
    $this->Image('ACÍ_ESCRIU_EL_TEU_LOGO.JPG',10,10,130);
    //Arial bold 15                                                                                                             
    $this->SetFont?('Arial','B',12);
    //Move to the right                                                                                                         
    $this->Cell(80);
    //Títol del document                                                                                                        
    //$this->Cell(80,10,'Passant un PHP a PDF',1,0,'C');                                                                        
    //Line break                                                                                                                
    $this->Ln(30);
  }

  //Page footer                                                                                                                 
  function Footer()
  {
    //Position at 1.5 cm from bottom                                                                                            
    $this->SetY?(-15);
    //Arial italic 8                                                                                                            
    $this->SetFont?('Arial','I',8);
    //Page number                                                                                                               
    $this->Cell(0,10,'Page '.$this->PageNo?().'/{nb}',0,0,'C');
  }

}

//Instanciation of inherited class $pdf=new PDF(); $pdf->AliasNbPages?(); $pdf->AddPage?(); $pdf->SetFont?('Times','',12);

$db=mysql_connect("EL_SERVIDOR_MYSQL","USUARI","CONTRASENYA"); mysql_select_db("BASE_DE_DADES",$db); $result = mysql_query("SELECT BLA,BLA,BLA FROM BLU,BLU,BLU",$db);

while ($myrow = mysql_fetch_array($result))

     $pdf->Cell(0,5, $myrow["CAMP1"].'   '.$myrow["CAMP2"],0,1);
     $pdf->Output();

mysql_close($db);

Açò et pot servir per llistar-te en PDF tots els teus contactes, llistar les teues receptes de cuina, etc... però no només açò... amb imaginació i temps pots arribar a programar-te un fanzine o un llibre dinàmic afegint imatges, trencant pàgines, màrgens, etc..

Generalment et servirà la llibreria FPDF, ja que escriuràs en català, espanyol, francès o anglès, no? Altres llengües, com el polonès, xinès, àrab o xec, per exemple, sí que necessiten la codificació UTF-8.

Ací a continuació teniu algunes proves dels resultats que podeu obtenir amb aquestes classes PHP:

* Alguns exemples amb FPDF
http://www.fpdf.org/en/script/index.php

* Un exemple amb UFPDF
http://www.acko.net/files/unicode.pdf

* Alguns exemples amb TCPDF
http://www.tecnick.com/public/code/cp_dpage.php?aiocp_dp=tcpdf_examples



Envia un nou comentari

No publicaré el teu correu i em servirà per contactar-te.
  • Web page addresses and e-mail addresses turn into links automatically.
  • Allowed HTML tags: <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd>
  • Les línies i paràgrafs es trenquen automàticament.
  • You may post code using <code>...</code> (generic) or <?php ... ?> (highlighted PHP) tags.

Més informació sobre opcions de format

CAPTCHA
Image CAPTCHA