Los archivos PDF se utilizan ampliamente en documentos y reportes que necesitan mantener el diseño y contenido (imágenes, tipos de letra, colores, etc), por ello vamos a aprender a crear archivos PDF utilizando PHP.
FPDF
FPDF es una clase PHP que permite la generación de archivos PDF de forma sencilla y sin necesidad de instalar librerías adicionales, cuenta con métodos bien documentados que facilitan su uso.
Antes de comenzar lo primero es descargar FPDF e incluir los archivos necesarios en nuestro proyecto.
Generar PDF básico
Como ejemplo básico crearemos un documento PDF en donde sólo imprimiremos un texto:
<?php
// include class
require('fpdf/fpdf.php');
// create document
$pdf = new FPDF();
$pdf->AddPage();
// add text
$pdf->SetFont('Arial', '', 12);
$pdf->Cell(0, 10, 'Generar archivos PDF con PHP', 0, 1);
// output file
$pdf->Output('', 'basic.pdf');
Podemos hacer un resumen de los principales métodos utilizados:
AddPage
: crea una nueva página en el documento PDF.SetFont
: define una fuente (fuente, estilo y tamaño) a utilizar.Cell
: permite imprimir un texto.Output
: genera el archivo y le asigna un nombre.
Como se observa se pueden generar archivos PDF con pocas líneas de código, solo es necesario revisar la documentación para utilizar correctamente cada método.
Generar PDF completo
Ahora que ya conocemos lo básico de FPDF, vamos a generar un documento con varios párrafos, una imágen e incluso agregarle metadata el archivos.
<?php
// include class
require('fpdf/fpdf.php');
// create document
$pdf = new FPDF();
$pdf->AddPage();
// config document
$pdf->SetTitle('Generar archivos PDF con PHP');
$pdf->SetAuthor('Kodetop');
$pdf->SetCreator('FPDF Maker');
// add title
$pdf->SetFont('Arial', 'B', 24);
$pdf->Cell(0, 10, 'Generar archivos PDF con PHP', 0, 1);
$pdf->Ln();
// add text
$pdf->SetFont('Arial', '', 12);
$pdf->MultiCell(0, 7, utf8_decode('Los archivos PDF se utilizan ampliamente en docum...'), 0, 1);
$pdf->Ln();
$pdf->MultiCell(0, 7, utf8_decode('FPDF es una clase PHP que permite la generación de...'), 0, 1);
$pdf->Ln();
$pdf->MultiCell(0, 7, utf8_decode('Antes de comenzar lo primero es descargar FPDF e...'), 0, 1);
$pdf->Ln();
// add image
$pdf->Image('assets/fpdf-code.png', null, null, 180);
// output file
$pdf->Output('', 'fpdf-complete.pdf');
En este ejemplo podemos ver nuevos métodos utilizados:
SetTitle
: define el título del archivo en la metadata.SetAuthor
: define el autor del archivo en la metadata.SetCreator
: define el creador del archivo en la metadata.MultiCell
: permite imprimir un texto grande con varias líneas.Ln
: agrega un salto de línea.Image
: permite incluir una imagen dentro del archivo PDF.
Nótese que también estamos utilizando el método de PHP utf8_decode
para imprimir correctamente los caracteres con tílde.
Generar PDF avanzado
Entre las ventajas de utilizar FPDF es que se puede extender de manera sencilla e incluir métodos propios que se adapten a nuestras necesidades.
<?php
// include class
require('fpdf/fpdf.php');
// extend class
class KodePDF extends FPDF {
protected $fontName = 'Arial';
function renderTitle($text) {
$this->SetTextColor(0, 0, 0);
$this->SetFont($this->fontName, 'B', 24);
$this->Cell(0, 10, utf8_decode($text), 0, 1);
$this->Ln();
}
function renderSubTitle($text) {
$this->SetTextColor(0, 0, 0);
$this->SetFont($this->fontName, 'B', 16);
$this->Cell(0, 10, utf8_decode($text), 0, 1);
$this->Ln();
}
function renderText($text) {
$this->SetTextColor(51, 51, 51);
$this->SetFont($this->fontName, '', 12);
$this->MultiCell(0, 7, utf8_decode($text), 0, 1);
$this->Ln();
}
}
// create document
$pdf = new KodePDF();
$pdf->AddPage();
// config document
$pdf->SetTitle('Generar archivos PDF con PHP');
$pdf->SetAuthor('Kodetop');
$pdf->SetCreator('FPDF Maker');
// add content
$pdf->renderTitle('Generar archivos PDF con PHP');
$pdf->renderText('Los archivos PDF se utilizan ampliamente en documentos y reportes por que se...');
$pdf->renderSubTitle('FPDF');
$pdf->renderText('FPDF es una clase PHP que permite la generación de archivos PDF de forma...');
$pdf->renderText('Antes de comenzar lo primero es descargar FPDF e incluir los archivos...');
$pdf->renderSubTitle('Ejemplo básico');
$pdf->renderText('Como ejemplo básico crearemos un documento PDF en donde sólo imprimiremos...');
$pdf->Image('assets/fpdf-code.png', null, null, 180);
// output file
$pdf->Output('', 'fpdf-advanced.pdf');
En nuestro ejemplo hemos creado una nueva clase llamada KodePDF
que extiende la clase FPDF
donde hemos agregado tres métodos para imprimir título, subtítulo y texto.
La principal ventaja de extender FPDF es que luego la generación del PDF es mucho mas sencillo y con menos líneas de código.
Comentarios