Usuario:ManuelRomero/PHP/pdf
De WikiEducator
< Usuario:ManuelRomero | PHP
Contenido
Fpdf
- fpdf o Free pdf es una librería o biblibioteca que nos permite generar ficheros o documentos pdf desde php.
- La documentación es muy buena y está en castellano
Plantilla:MRM Recursos en la Web
- Como está explicado de forma sencilla, vamos a ver ejemplos concretos y referenciaremos en la web
Uso básico
- Entendemos por ello el mínimo número de acciones para visualizar un documento pdf.
- Descargamos la librería (Necesitamos el fichero fpdf.php, el css y la carpeta de fuentes
<?php require('fpdf.php'); $pdf = new FPDF(); $pdf->AddPage(); //Agregar una página $pdf->SetFont('Arial','B',16); //Establecer la fuente, obligatorio antes de escribir un texto $pdf->Cell(40,10,'Hello World!'); //Añadir una celda: Recuadro en la posición actual, especificando anchura, altura y texto $pdf->Output(); //Generando la salida o página pdf ?>
Tip: No se puede generar ninguna salida antes ni después de output
Tip: El método Cell admite hasta 7 parámetros http://www.fpdf.org/es/doc/cell.htm
Estableciendo conjunto de caracteres
- Para ello podemos usar el método utf8_decode() de php, partiendo de la ide que esté codificado en utf8 y queramos usarlo enISO 8859-1 es una norma de la ISO que define la codificación del alfabeto latino.
<?php require ('./fpdf181/fpdf.php'); $pdf = new FPDF(); $text = "España es un país muy bonito"; $pdf->AddPage(); //Agregar una página $pdf->SetFont('Arial', 'B', 16); //Establecer la fuente, obligatorio antes de escribir un texto $pdf->Cell(40, 10, "$text"); //Añadir una celda: Recuadro en la posición actual, especificando anchura, altura y texto $pdf->Ln(); $text = utf8_decode($text); $pdf->Cell(40, 10, "$text"); //Añadir una celda: Recuadro en la posición actual, especificando anchura, altura y texto $pdf->Output(); //Generando la salida o página pdf ?>
</source>
- También podemos crear una fuente a partir de un fichero ttf y crearlo con un sistema de codificación concreto.
- Vamos a incorporar una nueva fuente a nuestra página.
- Para ello vamos a la siguiente url para localizar la fuente
- Descargamos el fichero ttf con tipo de letra
- Posteriormente podemos crear el fichero de carga de tipo de letra con la herramienta makefont
php makefont/makefont.php fuetes_ttf/tipo_letra_ttf_descargada.TTF iso-8859-1
- Esto genera dos ficheros que copiamos a la carpeta font
- Una vez ahí podemos usar el método AddFont para añadir la fuente, y luego usarla
//.... $pdf->AddFont('fuenteAmazOOS', '', 'AmazOOSTROBBold.php'); //Añade una fuente nueva estableciendo el fichero $pdf->SetFont('fuenteAmazOOS'); //Establecer la nueva fuente $pdf->Cell(40, 10, "$text"); //Añadir una celda: Recuadro en la posición actual, especificando anchura, altura y texto $pdf->Output(); //Generando la salida o página pdf
Cabecera y pie de página
- Para crearlos simplemente hemos de usar los métodos header y footer que están creados en la clase FPDP, sin código
- Una forma cómoda de hacerlo es crear una clase que extienda de FPDF e implementar los métodos
<?php require('./fpdf181/fpdf.php'); class PDF extends FPDF { // Page header function Header() { global $titulo; $this->SetFont('Arial', 'B', 15); //Calculamos el ancho para el título $ancho = $this->GetStringWidth($titulo) + 6; //Métodos para establecer colores $this->SetDrawColor(255, 0, 0); // Color del borde $this->SetFillColor(230, 230, 0); //Color de relleno $this->SetTextColor(0, 50, 50); //XColor del texto // // Logo $this->Image('cesta.png', 10, 6, 30); // Arial bold 15 // Move to the right $this->Cell(80); // Title $this->Cell($ancho, 10, utf8_decode($titulo), 1, 1, 'C', true); // Line break $this->Ln(20); } // 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, utf8_decode('Imprimiendo líneas Pagina ') . $this->PageNo() . '/paginas', 0, 0, 'C'); } } // Instanciation of inherited class $pdf = new PDF(); $titulo = "Listado de productos"; $pdf->AliasNbPages("paginas"); //Define un nombre para el número de páginas $pdf->AddPage(); $pdf->SetFont('Times', '', 12); /* * Aquí abría que localizar los productos y visualizarlos * */ $pdf->Output(); ?>