PDA

Ver la Versión Completa : [Tutorial] Creación de PDF en PHP


RHAF
16-nov-2012, 11:51
Ampliando la información creada en éste post http://intercambiosos.org/showthread.php?t=27205 creado por el compañero kapry.

PHP tiene una gran variedad de funcionalidades, entre ellas está su capacidad para generar archivos PDF. Sin embargo, muchas veces, esto resulta engorroso y complicado para el desarrollador. Ante ello, existen, también, varias clases que pueden facilitar la creación y personalización de estos archivos. En este post, conoceremos una alternativa de muchas: R&OS pdf Class (ezpdf). Esta clase provee diversas funciones potentes y simples para la generación dinámica de archivos PDF en PHP. Asimismo, es completamente gratuita y la puedes conseguir siguiendo el siguiente enlace(previamente dado en el post mencionado al inicio de éste): R&ROS pdf Class (http://sourceforge.net/projects/pdf-php/).

Una vez descargado el paquete pdfClassesAndFonts_010.zip. Ahí encontrarás toda las clases y documentación necesaria para comenzar a crear tus archivos PDF en PHP.

Agregación de Clases

En la carpeta pdf-php de nuestro archivo previamente descargado, encontrarás dos archivos: class.ezpdf.php y class.pdf.php. Estos contienen todos los métodos simplificados para la creación de documentos PDF. Asimismo, disponemos de la carpeta fonts, la cual posee algunas fuentes que pueden ayudarte a personalizar tus archivos PDF.

Es importante que agregues los archivos y la carpeta mencionada anteriormente a tu proyecto.

Iniciar Creación de Archivo PDF
En primer lugar, debes incluir la Clase ezpdf a tu archivo PHP.

<?php
require_once('class.ezpdf.php');
?>

también se puede asi:

<?php
include ('class.ezpdf.php');
?>

Luego, es necesario crear una instancia de la Clase Cezpdf, que nos servirá para la creación y personalización de nuestro archivo PDF.

$pdf = new Cezpdf();

Con esta clase, disponemos de una serie de opciones. Así que, seleccionaremos una fuente de texto con el método selectFont; agregaremos un texto con la función ezText; y, finalmente, se generará el archivo PDF con la función ezStream, Por lo tanto no quedaría finalmente así el archivo.

<?php
include 'class.ezpdf.php';
$pdf = new Cezpdf();
$pdf->selectFont('fonts/Helvetica-Bold.afm');
$pdf->ezText("Mi Primer Archivo PDF en PHP para intercambiosvirtuales.");
$pdf->ezStream();
?>

Podemos agregar mas opciones...
Ahora explicaré algunas opciones a incluir en el archivo PDF. Puedes agregar los datos de autor del documento PDF, utilizando la función addInfo, al cual le pasaremos como parámetro un array con la información correspondiente del autor.

<?php
require_once('class.ezpdf.php');

$pdf = new Cezpdf('a4','landscape');//escogemos el tipo de hoja y la ponemos horizontal
$pdf->selectFont('fonts/Helvetica.afm');//tipo de fuente

$datacreador = array (
'Title'=>'Mi Archivo PDF, creado en PHP',
'Subject'=>'intercambiosvirtuales.org',
'Author'=>'RHAF',
'Producer'=>'http://www.http://intercambiosos.org'
);
$pdf->addInfo($datacreador);

$pdf->ezStream();
?>

se puede agregar tablas a tu archivo, mediante el método ezTable. Éste tiene como parámetros un array de datos a mostrar y otro array con los títulos de la tabla.

<?php
require_once('class.ezpdf.php');

$pdf = new Cezpdf('A4');
$pdf->selectFont('fonts/Helvetica.afm');

$data[] = array('pais'=>'Peru', 'capital'=>'Lima');
$data[] = array('pais'=>'Colombia', 'capital'=>'Bogota');
$data[] = array('pais'=>'Chile', 'capital'=>'Santiago de Chile');
$data[] = array('pais'=>'Brasil', 'capital'=>'Brasilia');
$data[] = array('pais'=>'Ecuador', 'capital'=>'Quito');
$data[] = array('pais'=>'Bolivia', 'capital'=>'La Paz');
$data[] = array('pais'=>'Argentina', 'capital'=>'Buenos Aires');
$data[] = array('pais'=>'Guyana', 'capital'=>'Georgetown');
$data[] = array('pais'=>'Surinam', 'capital'=>'Paramaribo');
$data[] = array('pais'=>'Uruguay', 'capital'=>'Montevideo');
$data[] = array('pais'=>'Paraguay', 'capital'=>'Asuncion');
$data[] = array('pais'=>'Venezuela', 'capital'=>'Caracas');

$titles = array('pais'=>'<b>Pais</b>', 'capital'=>'<b>Capital</b>');

$pdf->ezStream();
?>

además, para dar mas vistoso al pdf se puede incluir una imagen en el documento PDF. Para ello, se utiliza el método ezImage, cuya sintaxis es la siguiente: ezImage(image,[padding],[width],[resize],[justification],[array border]). En donde, image es la ruta de la imagen; padding es la separación entre la imagen y el texto; resize es el modo de dimensión a aplicarse, que puede ser "full", "none", "width"; justification es la posición horizontal de la imagen; y border es un array con las especificaciones del borde de la imagen, como ejemplo array('gap') o array('color'=>'black'). Todos los parámetros, excepto la ruta de la imagen, son opcionales.

<?php
$pdf->ezImage('img.jpg',0, 300, 'none', 'center',array('color'=>'black'));
ob_end_clean(); //opcional
$pdf->ezStream();
?>

Si queremos agregar un link, sólo tenemos que utilizar: <c:alink:enlace>texto con enlace</c:alink>

<?php
$pdf->ezText("<c:alink:http://www.intercambiosos.org><b>Kamlov - http://www.intercambiosos.org</b></c:alink>\n",16);
?>

Resumiendo todo y aplicando todas las cosas de nuestro interés, quedaría (para éste caso) un pdf con éstas opciones...

<?php
require_once('class.ezpdf.php');

$pdf = new Cezpdf('a4','landscape');//escogemos el tipo de hoja y la ponemos horizontal
$pdf->selectFont('fonts/Helvetica.afm');//tipo de fuente

$datacreador = array (
'Title'=>'Mi Archivo PDF, creado en PHP',
'Subject'=>'intercambiosvirtuales.org',
'Author'=>'RHAF',
'Producer'=>'http://www.http://intercambiosos.org'
);
$pdf->addInfo($datacreador);

$data[] = array('pais'=>'Peru', 'capital'=>'Lima');
$data[] = array('pais'=>'Colombia', 'capital'=>'Bogota');
$data[] = array('pais'=>'Chile', 'capital'=>'Santiago de Chile');
$data[] = array('pais'=>'Brasil', 'capital'=>'Brasilia');
$data[] = array('pais'=>'Ecuador', 'capital'=>'Quito');
$data[] = array('pais'=>'Bolivia', 'capital'=>'La Paz');
$data[] = array('pais'=>'Argentina', 'capital'=>'Buenos Aires');
$data[] = array('pais'=>'Guyana', 'capital'=>'Georgetown');
$data[] = array('pais'=>'Surinam', 'capital'=>'Paramaribo');
$data[] = array('pais'=>'Uruguay', 'capital'=>'Montevideo');
$data[] = array('pais'=>'Paraguay', 'capital'=>'Asuncion');
$data[] = array('pais'=>'Venezuela', 'capital'=>'Caracas');

$titles = array('pais'=>'<b>Pais</b>', 'capital'=>'<b>Capital</b>');

$pdf->ezImage('img.jpg',0, 140, 'none', 'center',array('color'=>'black'));

$pdf->ezText("<b>PDF en PHP para Intercambiosos.org</b>\n",16);
$pdf->ezText("Paises Sudamericanos\n",12,array('justification'=>'center'));

$pdf->ezTable($data,$titles,'',$options );

$pdf->ezText("\n\n\n",10);
$pdf->ezText("<b>Fecha:</b> ".date("d/m/Y"),10);
$pdf->ezText("<b>Hora:</b> ".date("H:i:s")."\n",10);

$pdf->ezText("<c:alink:http://www.intercambiosos.org><b>Visita http://www.intercambiosos.org</b></c:alink>\n",16);

$pdf->ezStream();
?>

Para mas información pueden leer el archivo readme.pdf que viene en la descarga de la librería que puse al inicio.

pueden descargar el ejemplo hecho en éste post.
Descargar (http://blogrhaf.comlu.com/pdf.zip)

baduser
16-nov-2012, 12:23
yo no veo ningun readme en la descarga compañero, de todas maneras gracias por la info...

salu2

RHAF
16-nov-2012, 12:39
yo no veo ningun readme en la descarga compañero, de todas maneras gracias por la info...

salu2

amigo, en la descarga de las librerías, no del ejemplo ;) ...

pd: corregí el post principal para que no vuelva a haber equivocación ;)

karlitrox
16-nov-2012, 21:46
Gracias por la info, pero encontre todo muy dificil, no se ni que es php :S:S:S

RHAF
16-nov-2012, 22:05
Gracias por la info, pero encontre todo muy dificil, no se ni que es php :S:S:S

jejeje amigo, como sabes que es php entonces no comprendes mi post...

Mira, para no ir a definiciones extensas php no es mas que un lenguaje de programación para paginas web...

para informarte mas da clic aquí (http://es.wikipedia.org/wiki/PHP)

acostakiller
16-nov-2012, 22:22
gracias por la info

MADEHACKER
07-feb-2013, 02:56
Muchas gracias por tan importante detalle!.