Diferencia entre revisiones de «Usuario:ManuelRomero/PHP/pdf»
De WikiEducator
< Usuario:ManuelRomero | PHP
(→Cabecera y pie de página) |
(→Cabecera y pie de página) |
||
Línea 63: | Línea 63: | ||
===Cabecera y pie de página=== | ===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 | ||
+ | <source lang=php> | ||
+ | |||
+ | <?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(); | ||
+ | ?> | ||
+ | </source> | ||
+ | {{MRM_Actividad|Title=Listado de productos en pdf| | ||
+ | Vamos a completar el código anterior para visualizar un listado con los productos}} | ||
+ | |||
+ | ===Escribiendo texto=== | ||
+ | |||
+ | ===Añadiendo páginas=== | ||
+ | ===Estableciendo imágenes y links=== | ||
+ | |||
+ | ===Agregando tablas=== | ||
+ | |||
===Escribiendo texto=== | ===Escribiendo texto=== | ||
Última revisión de 01:13 28 mar 2017
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(); ?>