Cómo generar archivos PDF dinámicamente con PHP utilizando FPDF

PHP te permite generar archivos PDF de manera dinámica, lo cual puede ser útil para una variedad de tareas. FPDF es una clase gratuita en PHP que contiene varias funciones que te permiten crear y manipular PDFs.

Índice de Contenido
  1. PDFlib
  2. ¿Por qué FPDF?
  3. Creando archivos PDF
    1. Poniéndolo todo junto:

PDFlib

La API de PHP contiene varias funciones para manejar archivos PDF diseñadas para ser usadas con PDFlib. Aunque extensa, esta biblioteca no es gratuita para uso comercial. Existe una versión gratuita llamada PDFlib Lite disponible para uso personal, pero tiene funcionalidad limitada. Para usar la biblioteca completa de PDFlib, debes comprar una licencia bastante costosa.

¿Por qué FPDF?

Una forma alternativa de generar archivos PDF con PHP es usando FPDF, una clase en PHP gratuita que contiene varias funciones para crear y manipular PDFs. La palabra clave aquí es gratuita. Eres libre de descargar y usar esta clase o personalizarla según tus necesidades. Además de ser gratuita, también es más fácil de usar que PDFlib. PDFlib necesita ser instalado como una extensión en tu paquete de PHP, mientras que FPDF solo necesita ser incluido en tu script de PHP y ya está listo para usar.

Creando archivos PDF

Para comenzar, necesitarás descargar la clase FPDF desde el sitio web de FPDF e incluirla en tu script de PHP de la siguiente manera:

require('fpdf.php');

A continuación se muestra un ejemplo de cómo generar un PDF simple usando FPDF.

Comenzamos creando un nuevo objeto FPDF con:

Cómo escribir un algoritmo de ordenamiento en SQL Server
$pdf = new FPDF();

El constructor de FPDF puede tomar los siguientes parámetros:

  • String orientation (P o L) - retrato o paisaje
  • String unit (pt, mm, cm e in) - unidad de medida
  • Mixed format (A3, A4, A5, Letter y Legal) - formato de las páginas

A continuación, vamos a establecer algunas propiedades del documento:

$pdf->SetAuthor('Lana Kovacevic');
$pdf->SetTitle('Tutorial de FPDF');

Como queremos usar la misma fuente en todo el documento, podemos establecerla antes de crear una página.

$pdf->SetFont('Helvetica', 'B', 20);
$pdf->SetTextColor(50, 60, 100);

La función SetFont toma tres parámetros: la familia de fuentes, el estilo y el tamaño. Estamos usando Helvetica, negrita y 20 puntos, que se aplicarán al título de nuestro documento. Puedes usar una de las familias de fuentes regulares o configurar una diferente usando la función AddFont().

Con SetTextColor() también estamos estableciendo el color de fuente para todo el documento. Los colores pueden ser representados como RGB o escala de grises. Aquí estamos usando valores RGB.

Ahora que eso está listo, configuremos una página para nuestro documento PDF.

Consejos para manejar los desacuerdos de manera productiva
$pdf->AddPage('P');
$pdf->SetDisplayMode(real, 'default');

Se puede pasar a AddPage() un parámetro de "P" o "L" para especificar la orientación de la página. He usado "P" para el formato vertical. La función SetDisplayMode determina cómo se mostrará la página. Puedes pasarle parámetros de zoom y diseño. Aquí estamos usando un zoom del 100% y el diseño predeterminado del visor.

Ahora que hemos configurado una página, insertemos una imagen para que se vea mejor y hagamos que sea un enlace mientras estamos en ello. Mostraremos el logo de FPDF llamando a la función Image y pasándole los siguientes parámetros: nombre del archivo, dimensiones y URL.

$pdf->Image('logo.png', 10, 20, 33, 0, ' ','http://www.fpdf.org/');

También podrías haber insertado el enlace con:

$pdf->Link(10, 20, 33,33, 'http://www.fpdf.org/');

Ahora hagamos un título para nuestro documento con un borde alrededor.

$pdf->SetXY(50,20);
$pdf->SetDrawColor(50,60,100);
$pdf->Cell(100,10,'Tutorial de FPDF',1,0,'C',0);

La función SetXY establece la posición de las coordenadas x e y, donde queremos que aparezca el título. SetDrawColor establecerá el color del borde, utilizando valores RGB. Después de eso, llamamos a la función Cell para imprimir un rectángulo de celda junto con el texto de nuestro título. Estamos pasando a la función los siguientes parámetros: ancho, alto, texto, borde, ln, alineación y relleno. El borde es 0 para sin borde o 1 para con marco. Para ln estamos usando el valor predeterminado de 0, "C" para centrar el texto dentro de la celda y 0 para sin relleno. Si hubiéramos usado 1 para relleno, el rectángulo se habría coloreado. Con un valor de 0 lo hacemos transparente.

Ahora queremos escribir el texto principal en el PDF, es decir, mostrar un pequeño mensaje.

Cómo utilizar JConsole para monitorear y administrar aplicaciones Java
$pdf->SetXY(10,50);
$pdf->SetFontSize(10);
$pdf->Write(5,'¡Felicidades! Has generado un PDF.');

Nuevamente, estamos estableciendo las posiciones x e y del texto, pero esta vez estamos reduciendo el tamaño de fuente con la función SetFontSize. La función Write imprimirá el texto en un PDF. El parámetro 5 establecerá la altura de línea. Esto solo es relevante, sin embargo, si hay varias líneas de texto.

Finalmente, queremos enviar la salida a un destino determinado, usando la función Output.

$pdf->Output('ejemplo1.pdf', 'I');

Aquí estamos pasando a la función el nombre del archivo y el destino, en este caso "I". El parámetro "I" enviará la salida al navegador.

Poniéndolo todo junto:

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

// Crear un objeto FPDF
$pdf = new FPDF();

// Establecer propiedades del documento
$pdf->SetAuthor('Lana Kovacevic');
$pdf->SetTitle('Tutorial de FPDF');

// Establecer fuente para todo el documento
$pdf->SetFont('Helvetica', 'B', 20);
$pdf->SetTextColor(50, 60, 100);

// Configurar una página
$pdf->AddPage('P');
$pdf->SetDisplayMode(real, 'default');

// Insertar una imagen y hacer que sea un enlace
$pdf->Image('logo.png', 10, 20, 33, 0, ' ','http://www.fpdf.org/');

// Mostrar el título con un borde alrededor
$pdf->SetXY(50,20);
$pdf->SetDrawColor(50,60,100);
$pdf->Cell(100,10,'Tutorial de FPDF',1,0,'C',0);

// Establecer posición x e y para el texto principal, reducir el tamaño de fuente y escribir contenido
$pdf->SetXY (10,50);
$pdf->SetFontSize(10);
$pdf->Write(5,'¡Felicidades! Has generado un PDF.');

// Mostrar el documento
$pdf->Output('ejemplo1.pdf', 'I');
?>

Ahora que has aprendido cómo generar un PDF simple, veamos qué más podemos hacer con FPDF. El código de ejemplo a continuación demuestra cómo hacer un encabezado y un pie de página para tu documento.

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

class PDF extends FPDF
{
function Header()
{
$this->Image('logo.png',10,8,33);
$this->SetFont('Helvetica','B',15);
$this->SetXY(50, 10);
$this->Cell(0,10,'Este es un encabezado',1,0,'C');
}

function Footer()
{
$this->SetXY(100,-15);
$this->SetFont('Helvetica','I',10);
$this->Write (5, 'Este es un pie de página');
}
}

$pdf = new PDF();
$pdf->AddPage();
$pdf->Output('ejemplo2.pdf','D');
?>

Como puedes ver, estamos creando una clase hija de FPDF usando la herencia y configurando el comportamiento tanto para las funciones Header como para Footer. Luego creamos un nuevo objeto de esta clase PDF y agregamos una página a nuestro documento. AddPage() llamará automáticamente a Header y Footer. Finalmente, lo enviamos a un archivo llamado ejemplo2.pdf, esta vez usando la opción "D" para el ejemplo. Esto enviará el archivo al navegador y abrirá un cuadro de diálogo, solicitando al usuario que guarde el archivo.

Ahora que tienes una idea de cómo funciona FPDF, adelante y juega con algunas de sus funciones y diviértete construyendo tus propios PDFs. Para ver la lista completa de funciones, consulta el sitio web de FPDF.

Cómo buscar en el historial de comandos en la terminal zsh

En Newsmatic nos especializamos en tecnología de vanguardia, contamos con los artículos mas novedosos sobre Desarrollo, allí encontraras muchos artículos similares a Cómo generar archivos PDF dinámicamente con PHP utilizando FPDF , tenemos lo ultimo en tecnología 2023.

Artículos Relacionados

Subir

Utilizamos cookies para mejorar su experiencia de navegación, mostrarle anuncios o contenidos personalizados y analizar nuestro tráfico. Al hacer clic en “Aceptar todo” usted da su consentimiento a nuestro uso de las cookies.