Ads 468x60px

Perfil

sábado, 27 de abril de 2013

Generar archivos PDF dinámicamente con PHP

pdf logoLos documentos PDF han demostrado ser un medio muy importante dentro de la ofimática actual. Crear, administrar y exportar archivos PDF suele ser un requerimiento esencial dentro de cualquier proyecto web. Necesitamos una herramienta para
  1. Insertar imágenes y gráficas.
  2. Establecer la fuente del PDF.
  3. Tener dinámicamente control sobre el diseño del mismo.
  4. Realizar una maquetaciĂłn decente para esta clase de documentos es esencial.
De nuestra habilidad para crear estos documentos dependerá la calidad del archivo finalmente exportado. Es por esto que desde este blog os quiero presentar mi herramienta preferida la clase FPDF de PHP.
FPDF es una clase escrita en PHP que permite generar documentos PDF directamente desde PHP, es decir, sin usar la biblioteca PDFlib. La F de FPDF significa Free (gratis y libre): puede usted usarla para cualquier propĂłsito y modificarla a su gusto para satisfacer sus necesidades.
La clase genera documentos en muchos otros idiomas aparte de los europeos occidentales: europeo central, ciríloco, griego, báltico y tailandés, si se dispone de fuentes TrueType o Type1 con el conjunto de caracteres adecuado. El chino y el japonés también están admitidos. UTF-8 también está disponible.
Como es lĂłgico, la velocidad de generaciĂłn de un documento es menor que con PDFlib. Sin embargo, la desventaja en cuanto a rendimiento es muy razonable y se adecĂşa a la mayorĂ­a de los casos, a no ser que sus documentos vayan a ser especialmente complejos o extensos.
He aquí un ejemplo de uso de la clase simple. El desarrollador tiene en su página muchos más ejemplos más aparte de documentación: http://www.fpdf.org/
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
32
33
34
35
36
37
38
require('fpdf.php');
class PDF extends FPDF
{
//Cabecera de página
function Header()
{
    //Logo
    $this->Image('logo_pb.png',10,8,33);
    //Arial bold 15
    $this->SetFont('Arial','B',15);
    //Movernos a la derecha
    $this->Cell(80);
    //TĂ­tulo
    $this->Cell(30,10,'Title',1,0,'C');
    //Salto de lĂ­nea
    $this->Ln(20);
}
//Pie de página
function Footer()
{
    //PosiciĂłn: a 1,5 cm del final
    $this->SetY(-15);
    //Arial italic 8
    $this->SetFont('Arial','I',8);
    //NĂşmero de página
    $this->Cell(0,10,'Page '.$this->PageNo().'/{nb}',0,0,'C');
}
}
//CreaciĂłn del objeto de la clase heredada
$pdf=new PDF();
$pdf->AliasNbPages();
$pdf->AddPage();
$pdf->SetFont('Times','',12);
for($i=1;$i<=40;$i++)     $pdf->Cell(0,10,'Imprimiendo lĂ­nea nĂşmero '.$i,0,1);
$pdf->Output();