Un ejemplo sencillo:
<?php require('fpdf17/fpdf.php'); $pdf = new FPDF(); $pdf->AddPage(); $pdf->SetFont('Arial', 'B', 16); $pdf->Cell(80, 10, 'Esto es una celda de 40 x 10', 1); $pdf->Cell(50, 10, 'Celda de 50 x 10', 1); $pdf->Ln(10); $pdf->SetFont('Arial', 'I', 12); $pdf->Cell(80, 10, 'Esto es una celda de 40 x 10', 0); $pdf->Cell(50, 10, 'Celda de 50 x 10', 0); $pdf->Output(); ?>
Llamamos la librería desde el directorio de fpdf, creamos un objeto y añadimos una pagina con AddPage(), seteamos el tipo de letras estilo y tamaño. Luego creamos una celda para contener datos con la siguiente estructura
$pdf->Cell(ancho, alto, contenido, borde , alineación); //Alineación L Izquierda, C Centrado, R Derecha
El resultado del código anterior en pdf sera:
La función Output es quien muestra el pdf si le ponemos el parámetro I enviara el fichero al navegador, si le ponemos el parámetro D mostrar la ventana de descarga, por lo tanto si en el código anterior escribimos
$pdf->Output('mipdf.pdf','d');
Como resultado aparecerá la ventana de descarga para guardar el pdf.
También podemos hacer documentos mas complejos como por ejemplo facturas, presupuestos o reportes comerciales, utilizar bases de datos como mysql.
En el siguiente ejemplo veremos como crear un presupuesto con una imagen de cabecera
<?php require('fpdf16/fpdf.php'); $pdf = new FPDF(); $pdf->AddPage(); $pdf->SetFont('Arial', 'B', 16); //inserto la cabecera poniendo una imagen dentro de una celda $pdf->Cell(700,85,$pdf->Image('./images/logo-factura.jpg',30,12,160),0,0,'C'); $pdf->Cell(100,12,"Presupuesto: ". $campodb['nropresuputao']); $pdf->Cell(100,12,"Fecha: ". date('d/m/Y')); $pdf->Line(35,40,190,40); $pdf->Ln(7); $pdf->Cell(100,12,"Nombre : ".$campodb['nombre'])); $pdf->Cell(90,12,"Nif: ".$rowcli['nif']); $pdf->Line(35,48,190,48); $pdf->Ln(7); $pdf->Cell(100,12,"Domicilio: ". $campodb['direccion']); $pdf->Line(35,56,190,56); $pdf->Ln(7); $pdf->Cell(90,12,acentos("Teléfono: ".$campodb['telefono'])); $pdf->Line(35,62,190,62); $pdf->Ln(7); $pdf->Cell(100,12,"Equipo: ".$campodb['ordenador']); $pdf->Line(35,68,190,68); $pdf->Ln(9); $pdf->SetFont('Arial','B',10); $pdf->Cell(60,12,'PRESUPUESTO'); $pdf->Ln(2); $pdf->SetFont('Arial','',8); ?>
Luego mediante una consulta a la base de datos mas un ciclo while genero las demás celdas y calculo los importes.
<? while ($i<count($conultadb)) { [indent=1]$pdf->Ln(7);[/indent] [indent=1]$pdf->Cell(139,7,acentos($campodb['concepto']),1,0,'1'); [/indent] [indent=1]$pdf->Cell(15,7,chr(128)." ".number_format($campodb['precio'],2,'.',''),1,0,'R'); [/indent] [indent=1]//calculo el total[/indent] $precio=$precio+$campodb['precio']; } ?>
Luego creamos las celdas restantes para los totales, iva, e impuestos según corresponda
<? $pdf->Ln(7); $pdf->Cell(110,7); $pdf->Cell(29,8,"TOTAL",1,0,'R'); $pdf->Cell(15,8,chr(128)." ".number_format($precioconiva,2,'.',''),1,0,'R'); $pdf->Ln(20); $pdf->Multicell(400,4, "Nota: ".$rowrepar['notapresu']); ?>
Añadimos también un Multicell, que cumple la función de varias celdas en una sirve para grandes bloques de texto como una nota al pie de pagina
Finalmente le damos un nombre a nuestro fichero, al que podemos ponerle un id que los vaya enumerando según una base de datos y le definimos la opción descargar.
<? $fichero='presupuesto-00.pdf'; $pdfdoc = $pdf->Output($fichero, "D"); ?>
Otra aplicación interesante es combinar fpdf con clases para generar códigos de barra con I25, EAN 39, 128, etc. En la web de fpdf hay algunos ejemplos y otros script aportados por la comunidad para testear. Aquí un ejemplo de un talón de pago que los clientes se descargan desde una web.
Un problema muy común que suele dar esta librería es no respetar los acentos, eso lo podemos solucionar con una función para luego revisar cada texto del contenido.
<? function acentos($cadena) { $buscar = explode(",","á,é,í,ó,ú,ñ,Á,É,Í,Ó,Ú,Ñ,á,é,Ã,ó,ú,ñ,Ãá,Ãé,ÃÃ,Ãó,Ãú,Ãñ"); $cambiar = explode(",","á,é,í,ó,ú,ñ,Á,É,Í,Ó,Ú,Ñ,á,é,í,ó,ú,ñ,Á,É,Í,Ó,Ú,Ñ"); $textocorregido= str_replace($buscar $cambiar, $cadena); return $textocorregido; } ?>
De esta manera salvaremos el problema de FPDF y los acentos.
Saludos