Anda di halaman 1dari 17

Qu es FPDF?

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 propsito y modificarla a su gusto para satisfacer sus necesidades. FPDF tiene otras ventajas: funciones de alto nivel. Esta es una lista de sus principales caractersticas:

Eleccin de la unidad de medida, formato de pgina y mrgenes Gestin de cabeceras y pies de pgina Salto de pgina automtico Salto de lnea y justificacin del texto automticos Admisin de imgenes (JPEG, PNG y GIF) Colores Enlaces Admisin de fuentes TrueType, Type1 y codificacin Compresin de pgina FPDF no necesita de ninguna extensin para PHP (excepto zlib para activar la compresin y GD para soporte a GIF) y funciona con PHP4 ( 4.3.10) y PHP5. Los tutoriales le permitirn empezar rpidamente a usar FPDF. La documentacin completa (on line) se encuentra aqu y el rea de descarga, aqu. Se recomienda encarecidamente que lea las FAQ (o PMF: preguntas ms frecuentes), que listan las preguntas y problemas ms comunes (especialmente los relacionados con los navegadores). Existe una seccin de scripts que incluye algunas extensiones tiles.

Qu idiomas puedo usar?


La clase genera documentos en muchos otros idiomas aparte de los europeos occidentales: europeo central, cirloco, griego, bltico y tailands, si se dispone de fuentes TrueType o Type1 con el conjunto de caracteres adecuado. El chino y el japons tambin estn admitidos. UTF-8 tambin est disponible.

Y qu hay de la eficiencia?
Como es lgico, la velocidad de generacin de un documento es menor que con PDFlib. Sin embargo, la desventaja en cuanto a rendimiento es muy razonable y se adeca a la mayora de los casos, a no ser que sus documentos vayan a ser especialmente complejos o extensos. Para cualquier observacin, pregunta o problema, no dude en dejar un mensaje en el foro. Tambin puede escribirme a m (in French or English please ;-)).

REPORTES PDF CON LA CLASE FPDF, PHP Y MYSQL


Qu es FPDF? 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 propsito y modificarla a su gusto para satisfacer sus necesidades. FPDF tiene otras ventajas: funciones de alto nivel. Esta es una lista de sus principales caractersticas: * Eleccin de la unidad de medida, formato de pgina y mrgenes * Gestin de cabeceras y pies de pgina * Salto de pgina automtico * Salto de lnea y justificacin del texto automticos * Admisin de imgenes (JPEG, PNG y GIF) * Colores * Enlaces * Admisin de fuentes TrueType, Type1 y codificacin * Compresin de pgina La clase se puede descargar en la pgina oficial http://www.fpdf.org/ Una vez que la incluyas dentro de tu carpeta de proyectos web, puedes crear un pdf como lo desees.. Aqu mi ejemplo particular, ara adaptarlo puedes configurar tu clave usuario, y base de datos a usar, modificas las consultas a conveniencia, en este caso hay dos tablas dos funciones y dos consultas..

SetFillColor(62,102,60); // fondo de celda $this->SetTextColor(255); // color del texto $this->SetDrawColor(0,0,0); // color de linea $this->SetLineWidth(.3); // ancho de linea

$this->SetFont('Arial','', 7); $w=array(20,100,15,10,15,15,15); // en este arreglo definiremos el ancho de cada columna for($i=0;$iCell($w[$i],4,$header[$i],1,0,'C',1); //por cada encabezado existente, crea una celda $this->Ln(); //Colores, ancho de lnea y fuente en negrita de CONTENIDO $this->SetFillColor(244,244,244); // $this->SetTextColor(0); $this->SetFont(''); //Datos $fill=false; // variable para alternar relleno foreach($data as $row) { $columna = explode(";",$row); //separar los datos en posiciones de arreglo $this->Cell($w[0],6,$columna[0],'LR',0,'L',$fill); //celda(ancho,alto,salto de linea,border,alineacion,relleno) $this->Cell($w[1],6,$columna[1],'LR',0,'L',$fill); $this->Cell($w[2],6,$columna[2],'LR',0,'L',$fill); $this->Cell($w[3],6,$columna[3],'LR',0,'L',$fill); $this->Cell($w[4],6,$columna[4],'LR',0,'L',$fill); $this->Cell($w[5],6,$columna[5],'LR',0,'L',$fill); $this->Cell($w[6],6,$columna[6],'LR',0,'L',$fill); $this->Ln(); $fill=!$fill; //se alterna el valor del boolean $fill para cambiar relleno } $this->Cell(array_sum($w),0,'','T'); } function tabla1($header1,$data1) { //Colores, ancho de lnea y fuente en negrita de CABECERA $this->SetFillColor(62,102,60); // fondo de celda $this->SetTextColor(255); // color del texto $this->SetDrawColor(0,0,0); // color de linea $this->SetLineWidth(.3); // ancho de linea $this->SetFont('Arial','', 6); // negrita $w=array(70); // en este arreglo definiremos el ancho de cada columna for($i=0;$iCell($w[$i],4,$header1[$i],1,0,'C',1); //por cada encabezado existente, crea una celda $this->Ln(); //Colores, ancho de lnea y fuente en negrita de CONTENIDO $this->SetFillColor(244,244,244); // $this->SetTextColor(0); $this->SetFont(''); //Datos $fill=false; // variable para alternar relleno foreach($data1 as $row) {

$columna = explode(";",$row); //separar los datos en posiciones de arreglo // validacin a mano para que respete el limite de la celda if ($columna[0]>$w[0]){ $this->Cell($w[0],20,$columna[0],'LR',1,'L',$fill); //celda(ancho,alto,salto de linea,border,alineacion,relleno) } else{ $this->Cell($w[0],5,substr($columna[0],0, 45),'LR',1,'L',$fill); $this->Cell($w[0],5,substr($columna[0],45,53),'LR',1,'L',$fill); $this->Cell($w[0],5,substr($columna[0],99,150),'LR',1,'L',$fill); $this->Ln(0); } $fill=!$fill; //se alterna el valor del boolean $fill para cambiar relleno } $this->Cell(array_sum($w),0,'','T'); } function Footer() { //Pie de pgina $this->SetY(-15); $this->SetFont('Arial','I',10); $this->SetTextColor(128); $this->Cell(0,10,'Pagina '.$this->PageNo().' de {nb}',0,0,'C'); // el parametro {nb} es generado por una funcion llamada AliasNbPages } } $pdf = new PDF(); $pdf->AliasNbPages(); //funcion que calcula el numero de paginas $sql1 = "SELECT informacion FROM empresa"; $modificar11 = mysql_query($sql1, $conex) or die(mysql_error()); $head1 = array("VENEZOLANA DE RIEGO, C.A"); // cabecera $i=0; while ($fila=mysql_fetch_array($modificar11)){ //llenar variable dat con los campos de una fila unidos por ; $dat1[$i]=$fila[0]; //concatenar para luego ser separado por explode() $i++; } $sql = "SELECT codigo, descripcion, unidad, cantidad, precio_uni, descuento, total FROM orden_articulos where orden='10733'"; $modificar1 = mysql_query($sql, $conex) or die(mysql_error()); $head = array("Codigo","Descripcion","Unidad","Cant","Precio","Dcto","Total"); // cabecera $i=0; while ($fila=mysql_fetch_array($modificar1)){ //llenar variable dat con los campos de una fila unidos por ;

$dat[$i]=$fila[0].";".($fila[1]).";".$fila[2].";".$fila[3].";".$fila[4].";".$fila[5].";".$fila[6]; //concatenar para luego ser separado por explode() $i++; } $pdf->AddPage(); //crear documento $pdf->Image('images/logo.jpg',10,8,30,30); //aadir imagen $pdf->Cell(50); $pdf->SetFont('Arial','',12); $pdf->Cell(120,15,"ORDEN DE COMPRA",0,0,'C'); $pdf->Ln(35); $pdf->SetFont('Arial','',12); $pdf->Ln(10); $pdf->tabla1($head1,$dat1); $pdf->Ln(30); $pdf->tabla($head,$dat); $pdf->Output(); //el resto es historia ?>

En el da de hoy quiero ensearles algo muy sencillo pero til que podemos hacer en PHP y es crear archivos PDF. Para ello utilizaremos la clase FPDF, que pueden descargar desde aqu. El archivo que vamos a crear tiene que estar en la misma carpeta de la clase (fpdf.php) Bien, lo primero que vamos hacer es llamar la clase usando require: require(fpdf.php); Creamos el objeto FPDF $pdf=new FPDF(); De esta manera se usan los valores por defecto que son tamao a4 alargado y la unidad de medida es el milmetro. Para este tutorial usaremos los valores por defecto pero para cambiar el formato lo hacemos de la siguiente manera: $pdf=new FPDF(P,cm,Letter); // Aqu estamos usando cm como unidad de medida y formato carta. Podemos usar otros valores de medida como: pt: punto mm: milmetro cm: centmetro in: pulgada Y podemos usar los siguientes formatos: A3 A4 A5 Letter Legal Pueden encontrar informacin ms detallada aqu. Tenemos que crear una pagina y lo hacemos de la siguiente manera: $pdf->AddPage(); Por defecto el texto aparecer en la esquina superior izquierda y y la margen ser de 1 cm, estos valores los podemos modificar usando SetMargins() pero por hoy no explicare como se usa. A esta pgina para darle las caractersticas del texto usamos SetFont() es obligatorio invocar este mtodo antes de imprimir texto y se usara de la siguiente manera:

$pdf->SetFont(Arial,B,18); Como ven lo que hacemos es usar Arial como fuente, negrita (B) y el tamao del texto ser 18. Nota: No usar comillas para el tamao. Podramos haber especificado itlica con I, subrayado con U fuente Times, Courier, Symbol y ZapfDingbats. Pueden encontrar ms informacin aqu de como usar SetFont. Listo ahora podemos imprimir el texto que queramos usando Cell() $pdf->Cell(40,10,Hola, gente de Muriba!); Lo que hacemos es crear una celda, especificando sus dimensiones (40,10 mm) y seguidamente el texto que se quiere imprimir en este caso Hola, gente de Muriba! Por ultimo cerramos con Output() $pdf->Output(); Con Output podemos darle el nombre al pdf, si no lo hacemos por defecto creara doc.pdf, si queremos establecer un nombre al pdf lo podemos hacer de la siguiente manera: $pdf->Output(muriba.pdf, I); // Usamos I para enviar el fichero al navegador de forma que se usa la extensin (plug in) si est disponible. Output tiene ms opciones, pero no las explicare hoy, si desean informacin de las funciones de Output pueden encontrarla aqu. El cdigo completo seria:
AddPage(); $pdf->SetFont('Arial','B',18); $pdf->Cell(40,10,'Hola, gente de Muriba!'); $pdf->Output("muriba.pdf", "I"); ?>

Es posible crear un archivo pdf con php. Existen varias clases para realizar esa tarea pero en este tutorial se utiliza fpdf. fpdf se puede descargar gratuitamente desde: http://www.fpdf.org La clase fpdf se integra por el archivo:

fpdf.php Adicionalmente hace uso de los archivos: courier.php helveticabi.php helveticab.php helveticai.php helvetica.php symbol.php timesbi.php timesb.php timesi.php times.php zapfdingbats.php Estos archivos se almacenan en la carpeta / directorio "font" y su funcin es proporcionar letras / fuentes para crear los archivos pdf. Para instalar fpfd solamente basta subir al servidor el archivo fpdf.php y la carpeta con las fuentes. El archivo fpdf.php se puede subir al directorio raz o a un directorio propiol.

El archivo ejemplo-01.php incluye est cdigo que crea un pdf muy sencillo:
<? // archivo ejemplo-01.php require('./fpdf/fpdf.php'); // importa la clase $pdf=new FPDF(); // crea un nuevo pdf $pdf->AddPage(); // agrega una pgina al pdf $pdf->SetFont('Arial','B',16); //define el tipo, estilo y tamao de fuente / letra a utilizar $pdf->Cell(40,10,'Hello World!'); // crea una celda / cuadro con la frase "Hello World" $pdf->Output(); // genera el pdf ?>

Este es el archivo pdf resultado de este cdigo.

Descargar pdf A continuacin se explica lnea por lnea el cdigo anterior. En color se seala lo que NO DEBE MODIFICARSE pues son las funciones predefinidas de FPDF.

require('./fpdf/fpdf.php'); Importa la clase. Debe respetarse la ruta correcta en donde se localiza fpdf. En este caso en el directorio raz se cre el archivo ejemplo-01.php. Dentro del directorio raz se cre la carpeta fpdf y ah se guard el archivo fpdf.php. $pdf=new FPDF(); Crea un nuevo pdf. FPDF() es una funcin predefinida de fpdf. El nuevo pdf se almacenar en la variable $pdf, el nombre de esta variable puede cambiarse pero a lo largo del cdigo deber usarse el mismo valor para evitar errores. $pdf->AddPage(); Los archivos pdf tienen pginas, pueden tener una o varias. Con AddPage() se agrega una pgina al archivo pdf que se crear. $pdf->SetFont('Arial','B',16); Define el tipo, estilo y tamao de fuente / letra a utilizar. La funcin SetFont usa las variables tipo, estilo y tamao: SetFont(tipo,estilo,tamao). En este caso el tipo de letra a usar es Arial. En la carpeta "fonts" estn las fuentes disponibles. Slo se pueden usar fuentes que existan en la carpeta "fonts". Es posible crear ms fuentes pero se debe seguir el procedimiento determinado para crear la fuente pues no basta con subir al servidor un archivo True Type. Los estilos disponibles son normal, negritas e itlicas. En este ejemplo se us el estilo negritas. Para usar texto normal se debe escribir '', para itlicas se debe escribir 'I'. En este ejemplo se us el tamao de 16 puntos. $pdf->Cell(40,10,'Hello World!'); Crea una celda / cuadro con la frase "Hello World". En este ejemplo la funcin Cell usa las variables ancho de la celda, alto de la celda y texto a mostrar: Cell(ancho,alto,texto). Los valores del ancho y alto de la celda se definen por omisin en milmetros. fpdf divide a la hoja en celdas / cuadro para desplegar la informacin en el archivo pdf . Con este grfico pretende aclarar las cosas. La hoja se divide en celdas:

Y en cada celda se puede aadir contenido. $pdf->Output(); Genera el archivo pdf.

Se puede insertar una imagen al pdf. Para ello se usa la funcin: Image() El archivo ejemplo-02.php incluye est cdigo que inserta una imagen al pdf :
<? // archivo ejemplo-02.php require('./fpdf/fpdf.php'); // importa la clase $pdf=new FPDF(); // crea un nuevo pdf $pdf->AddPage(); // agrega una pgina al pdf $pdf->Image('logo.jpg',20,8); // agrega una imagen al pdf $pdf->Ln(50); // hace un salto de lnea $pdf->SetFont('Arial','B',16); //define el tipo, estilo y tamao de fuente / letra a utilizar $pdf->Cell(40,10,'Hello World!'); // crea una celda / cuadro con la frase "Hello World" $pdf->Output(); // genera el pdf ?>

Al cdigo del ejemplo anterior se le aadieron las lneas: $pdf->Image('logo.jpg',20,8); y $pdf->Ln(50); A continuacin se explica lnea por lnea el cdigo anterior. En color se seala lo que NO DEBE MODIFICARSE pues son las funciones predefinidas de FPDF. $pdf->Image('logo.jpg',20,8); Agrega una imagen al pdf. En este ejemplo la funcin Image usa las variables archivo, posicin en el plano x y posicin en el plano y: Cell(archivo,posicion_en_x,posicion_en_y). Los valores de la posicin en el plano x y en el plano y se definen por omisin en milmetros.

fpdf puede importar archivos jpg y png solamente. El valor de archivo debe incluir la ruta correcta hacia la imagen. En este caso la imagen se encuentra en el mismo directorio que el archivo ejemplo-02.php $pdf->Ln(50); Inserta un salto de lnea. En este ejemplo la funcin Ln usa la variable tamao del salto de lnea: Ln(tamao_salto_linea). Los valores del tamao del salto de lnea se definen por omisin en milmetros. Este es el archivo pdf resultado de este cdigo:

Descargar pdf Usando la capacidad de fpdf para dividir la hoja en celdas se pueden crear diseos ms elaborados como este archivo pdf:

Descargar pdf

fpdf incluye ms funciones que facilitan la tarea de crear archivos pdf. Es posible cambiar el color de los textos, de las celdas, agregar encabezados, pies de pgina y numeracin a todos las hojas automticamente. Ms an fpdf puede aprovechar los recursos de php para, por ejemplo, generar automticamente un reporte con los datos almacenados en una base de datos mysql y guardarlo en un archivo pdf.

Anda mungkin juga menyukai