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