PDFs con fondo utilizando PHP

  • 30/01/2008
  • 10:04 pm
  • unijimpe

En esta oportunidad les presentamos la forma de generar archivos PDF que contengan un fondo personalizado utilizando PHP. Esto nos puede permitir crear por ejemplo diplomas o certificados de forma rápida basado en un fondo predeterminado en conjunto con la información extraída de una base de datos. Para la generación de archivos PDF utilizaremos la clase R&OS: pdf class de la cual ya hemos comentado anteriormente en Generar PDF con PHP.

pdf-background.jpg

Requisitos
Lo primero que se necesita es la clase R&OS: pdf Class que es la base para la creación de PDF. Lo siguiente es una clase llamada backgroundPDF el cual es una extensión de la clase anterior. Esta la puedes encontrar en Background colors and images, descargan el archivo class.backgroundpdf.txt y lo renombran a class.backgroundpdf.php.

Implementando
Para la implementación de los PDF con fondo, incluimos las dos clases necesarias y luego inicializamos el PDF creando una instancia de la clase backgroundPDF de la siguiente forma.

  1. include('class.ezpdf.php');
  2. include('class.backgroundpdf.php');
  3.  
  4. $pdf = new backgroundPDF('a4', 'portrait', 'image', array('img'=>'img.jpg'));

En donde hemos seleccionado el tipo de papel, la orientación del papel y la imagen que deseamos utilizar como fondo para nuestro PDF. Luego de ello continuamos con los comandos ya conocidos para la creación de PDF con lo cual tendríamos:

  1. include('class.ezpdf.php');
  2. include('class.backgroundpdf.php');
  3.  
  4. $pdf = new backgroundPDF('a4', 'portrait', 'image', array('img'=>'img.jpg'))
  5. $pdf->selectFont('Helvetica.afm');
  6. $pdf->ezText('Background in PDF', 50);
  7. $pdf->ezText('', 12);
  8. $pdf->ezText('Ejemplo de PDF utilizando una imagen como Fondo.', 12);
  9. $pdf->ezNewPage();
  10. $pdf->ezText('Pagina 2', 50);
  11.  
  12. $pdf->ezStream();

Con lo cual obtenemos el siguiente resultado que hemos colocado en pdf-background.php. Como ven es muy sencillo y tiene infinidad de utilidades. Finalmente les dejo los archivo fuente de este ejemplo para que puedan hacer sus propios cambios.

Posts Relacionados

Total de Comentarios: 19

Publicidad
31/01/2008
11:22 am

Pues si puedo usart esto con el mismo wordpres para darle un sello a mis entradas.

01/02/2008
2:55 am

hola ke tal.. saludos..

una duda… por que me manda error de adobe diciendo que elarchivo esta dañado, e intentado bajar la calidad a menos de 7kb y solo asi me funciona, pero obvio se ve muy mal…

cualquier ayuda te lo agradeceria.. muy buen blog.. ;)

Alejandro
04/02/2008
12:54 pm

Lo de las imagenes me funciona bien, pero cuando quiero insertar acentos o la ñ me aparecen caracteres raros, alguna idea?
GRacias

karla
02/04/2008
11:32 am

muchas gracias por tu aporte realmente me sirvio, ahora necesito agregarle el logo y fecha numero de pagina es decir pie de paginaa y cabezare como podria hacerlo porfa si tienes uno q me sirva de ayuda o guia´´?

Laura
30/05/2008
9:11 pm

Hey Alejandro, revisa que tengas buena la ruta hacia la carpeta fonts:

$pdf->selectFont(’../fonts/Helvetica.afm’);

seguro te solucionara el problema =P

Mahatma
30/06/2008
5:54 pm

Qué tal buenas tardes. Disculpen hay alguna forma para poder colocar en cualquier parte del PDF los objetos dondo yo quiero, es decir, Supongamos que los quiero a determinada cantidad de pixeles del margen izquierod, derecho, etc, etc.
Como si le aplicara un CSS.
Muchas gracias.

Coraly
06/07/2008
4:06 pm

Estoy tratando de hacer un reporte pdf, que tiene dos niveles de ruptura, pareciera que la instrucción $pdf->ezStream(); cierra el ciclo.
No existe una forma de imprimir registros en forma parcial.

Diana
30/08/2008
8:04 pm

Hola, me ha servido perfecto tu ejemlo, mil gracias; aunque tengo un pequeño problema necesito que la imagen no se agrande al tamaño de la hoja, por que mi imagen debe de quedar en aprox un cuarto de la hoja pero me la agranda al tamaño de la hoja completa. Alguien podría ayudarme??

Luis
09/09/2008
1:45 pm

Hola amigo.
Super interesante su ejemplo, pero toy tratando de adaptarlo a mis necesidades pero no encuentro como sombrear el encbezado de titulo de una tabla del formulario.por favor si me pueden ayudar. Gracias

Edward
16/09/2008
6:45 pm

Hola.
Muy buenas estas pastillas, casi todo esta en la documentación si uno lee bien pero estas pastillas si que yudan mycho para dar un buen inicio.

Gracias!

andres
08/10/2008
8:58 am

mira que sin utilizar la libreria class.backgroundpdf.php, los ejemplos me funcionan perfectamente, pero al utilizarla para generarla con la imagen me genera el siguiente error

img.jpg
Warning: Cannot modify header information – headers already sent by (output started at C:\AppServ\php5\PEAR\class.backgroundpdf.php:73) in C:\AppServ\php5\PEAR\class.pdf.php on line 1916

cualquier ayuda gracias…..

Korku
10/01/2009
10:36 am

Me da el mismo error como el caso de andres… ¿Por qué puede ser?

Warning: Cannot modify header information – headers already sent by (output started at /homepages/5/d217807405/htdocs/dev025/pdf/class.backgroundpdf.php:128) in /homepages/5/d217807405/htdocs/dev025/pdf/class.pdf.php on line 1916

Warning: Cannot modify header information – headers already sent by (output started at /homepages/5/d217807405/htdocs/dev025/pdf/class.backgroundpdf.php:128) in /homepages/5/d217807405/htdocs/dev025/pdf/class.pdf.php on line 1917

Warning: Cannot modify header information – headers already sent by (output started at /homepages/5/d217807405/htdocs/dev025/pdf/class.backgroundpdf.php:128) in /homepages/5/d217807405/htdocs/dev025/pdf/class.pdf.php on line 1919

Korku
10/01/2009
10:44 am

Ya lo solucioné!

Usar buffers de salida con ob_start(); en el inicio del script y ob_end_flush(); en el final del script.

Leer http://www.php.net/manual/es/function.ob-start.php
http://www.php.net/manual/es/function.ob-end-flush.php

Lucas
28/04/2009
4:43 pm

Como lo solucionaste?
Le puse los
ob_start(); // al inicio
ob_end_flush(); // al final

Pero cuando llamo a la imagen no la carga.

$pdf = new backgroundPDF(’a4′, ‘landscape’, ‘image’, array(’img’=>’imagen.php?idcertificado=1′));

Ayuda por favor.

Lucas
28/04/2009
4:44 pm

Agrego que si genera el PDF pero sin la imagen de fondo.

Lucas
28/04/2009
4:47 pm

header(”Content-Type: image/jpeg”);
require_once(”../conectarse.php”);
require_once(”../funciones.php”);
$idcertificado=$_GET['idcertificado'];
conectar();
$result = mysql_query(”SELECT imagen FROM certificados WHERE idcertificado=’$idcertificado’”);
$result_array = mysql_fetch_array($result);
echo $result_array[0];

Luis Alberto
16/05/2009
9:53 am

Funciona muy bien, pero estoy tratando de generar una factura en pdf y necesito imprimir el texto con coordenadas exactas, como lo hago porque no veo en la clase una funcion que me permita hacerlo, agradezco su colabacion.

eduardo
26/05/2009
4:44 pm

como se pueden crear hojas de estilo con la clase css.php en pear?

raul
02/06/2009
7:16 am

buenas, no me carga la imagen de fondo,
estoy haciendo una prueba con el codigo que viene aqui, tengo todos los ficheros correctamente en el servidor.

gracias

Enviar Comentario

(*)

(*)