Usuario:ManuelRomero/PHP/pdf

De WikiEducator
Saltar a: navegación, buscar

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
?>
Icon present.gif
Tip: No se puede generar ninguna salida antes ni después de output


Icon present.gif
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


Icon inter.gif
Web de estilos de letra

http://www.abstractfonts.com/


  • 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();
?>


Icon activity.jpg
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

Añadiendo páginas

Estableciendo imágenes y links

Agregando tablas