> Manuales > Crear PDF en PHP con FPDF

Leemos un archivo .txt con PHP y lo insertamos en nuestro documento PDF con las funciones incorporadas de FPDF.

Insertar archivos de texto con  FPDF

Estamos realizando una serie de artículos prácticos para aprender a crear PDF directamente desde scripts PHP con las librerías FPDF. En el articulo anterior veíamos cómo crear los enlaces en el texto de los archivos PDF pero todavía nos queda bastante por delante.

Bien, pues en este articulo del manual sobre FPDF vamos a ver varias funciones para introducir el texto de un archivo .txt, es decir, vamos a mostrar el contenido de dicho archivo en nuestro PDF.

Vamos a empezar esta práctica colocando un ejemplo, que luego iremos explicándolo paso a paso para que se pueda entender todo lo que hacemos .

<?php
require('fpdf/fpdf.php');

class PDF extends FPDF
{
    //Cabecera de página
    function Header()
    {
        //Logo
        $this->Image("leon.jpg" , 10 ,8, 35 , 38 , "JPG" );
        //Arial bold 15
        $this->SetFont('Arial','B',15);
        //Movernos a la derecha
        $this->Cell(80);
        //Título
        $this->Cell(60,10,'Titulo del archivo',1,0,'C');
        //Salto de línea
        $this->Ln(20);
       
    }
    
    //Pie de página
    function Footer()
    {
        //Posición: a 1,5 cm del final
        $this->SetY(-15);
        //Arial italic 8
        $this->SetFont('Arial','I',8);
        //Número de página
        $this->Cell(0,10,'Page '.$this->PageNo(),0,0,'C');
    }
    
    function TituloArchivo($num,$label)
    {
       $this->SetY(55);
        //Arial 12
        $this->SetFont('Arial','',12);
        //Color de fondo
        $this->SetFillColor(200,220,255);
        //Título
        $this->Cell(0,6,"Archivo $num : $label",0,1,'L',true);
        //Salto de línea
        $this->Ln(4);
    }
    
    function CuerpoArchivo($file)
    {
        //Leemos el fichero
        $f=fopen($file,'r');
        $txt=fread($f,filesize($file));
        fclose($f);
        //Times 12
        $this->SetFont('Times','',12);
        //Imprimimos el texto justificado
        $this->MultiCell(0,5,$txt);
        //Salto de línea
        $this->Ln();
    }
    
    function ImprimirArchivo($num,$title,$file)
    {
        $this->AddPage();
        $this->TituloArchivo($num,$title);
        $this->CuerpoArchivo($file);
    }
}

$pdf=new PDF();
$title='Mostramos un archivo txt';
$pdf->SetTitle($title);
$pdf->SetY(65);
$pdf->ImprimirArchivo(1,'Archivo de prueba ','prueba1.txt');
$pdf->ImprimirArchivo(2,'Otro archivo','prueba2.txt');
$pdf->Output();
?>

Las primeras lineas no las vamos a explicar, ya que están detenidamente analizadas en los artículos anteriores de este manual. Así que pasamos directamente a la función TituloArchivo(), que nos permite especificar el diseño de los títulos de los archivos que vamos a mostrar. Le estamos dando un tipo de letra Arial con un tamaño 12, un color de fondo azul utilizando la función SetFillColor y colocando el titulo con su correspondiente formato, utilizando la función Cell.

A continuación creamos la función CuerpoArchivo() que es la que va a leer el archivo y imprimirlo en nuestro PDF.

Le pasamos como parámetro la ruta del archivo. Con fopen abrimos el archivo en modo lectura, después lo leemos con fread() y guardamos en una variable, cerramos el archivo y damos formato al texto que vamos a mostrar en nuestro PDF.

Para finalizar creamos la función ImprimirArchivo() que engloba las dos anteriores y nos hace más sencillo nuestro código.

Ya lo único que nos queda es lo de siempre, abrir nuestro archivo pdf, ponerle titulo y utilizar la función de ImprimirArchivo() las veces que queramos. Por ultimo cerrar el archivo y listo.

A continuación vamos a mostrar las dos funciones nuevas que hemos utilizado para la realización de este código:

Función SetFillColor()

Esta función nos define el color de relleno para celdas y rectángulos rellenos. Podemos expresar dicho color en RGB o escala de grises
Su sintaxis es la siguiente:

SetFillColor(int r [, int g, int b]);

siendo:

r: si g y b los ponemos, nos muestra el rojo sino la escala de gris
g: el verde
b: azul

Función MultiCell()

Este método nos permite imprimir texto con saltos de línea. Estos pueden ser automáticos o explícito (con el carácter n).
Su sintaxis es la siguiente:

MultiCell(float w, float h, string txt [, mixed border [, string align [, boolean fill]]])

Siendo:

Con esto hemos aprendido a trabajar con archivos de texto y definir diversas configuraciones interesantes. En el siguiente artículo cambiamos de tercio, abordando la creación de tablas en PDFs.

Sara Alvarez

Equipo DesarrolloWeb.com

Manual