Crear PDF con Imagenes en PHP

R&OS: pdf class una librería muy potente con la cual se pueden generar archivos PDF utilizando PHP tiene entre sus muchas cualidades el soporte para incluir imágenes dinámicamente. Si aún no sabes como utilizar R&OS, puedes leer Generar PDF con PHP en el cual explicamos los aspectos básicos del uso de esta librería.

Insertando imágenes
La librería R&OS tiene una función llamada ezImage la cual permite incluir una imagen desde un archivo cuya sintaxis es la siguiente:

[php] ezImage(image,[padding],[width],[resize],[justification])[/php]

En donde, image es la ruta de la imagen a incluir, padding es la separación entre el contenido y la imagen expresado en pixels, width es el ancho, resize es el tipo de redimensión a aplicarse (full, width, none), justification es la justificación de la imagen (center, left, right).

Luego si deseamos incluir una imagen llamada img.jpg, que no tenga margen de separación, de ancho 420 pixels y alineado a la izquierda. Finalmente imprimimos la fecha y hora de generación del archivo.

[php]
include(‘class.ezpdf.php’);
$pdf =& new Cezpdf(‘a4’);
$pdf->selectFont(‘fonts/courier.afm’);
$pdf->ezText(“PDF con Imagenes en PHP\n”,20);
$pdf->ezText(“Ejemplo de inclusión de imagenes en pdf\n\n”,12);
$pdf->ezImage(“img.jpg”, 0, 420, ‘none’, ‘left’);
$pdf->ezText(“Fecha: “.date(“d/m/Y”),10);
$pdf->ezText(“Hora: “.date(“H:i:s”),10);
$pdf->ezText(“unijimpe“);
$pdf->ezStream();
[/php]

Nótese que primero hemos incluido el archivo class.ezpdf.php el cual nos permite hacer uso de las funciones para crear pdf, luego creamos un pdf con tamaño de papel A4, escribimos un texto luego en la línea 6 mostramos la imagen deseada. Al final del ejemplo hemos incluido un enlace, esto utilizando la propiedad c:link.

El resultado del ejemplo lo pueden ver en http://samples.unijimpe.net/pdf/pdfimg.php, además de ello les dejo los archivo fuente para que lo descarguen y pongan en práctica lo aprendido.

Comentarios Total 113 comentarios


Luca
Publicado: 04/01/2012 12:06 pm

Yo llevo un buen rato con lo del \n y a mi tampoco me lo hace, me lo pone en la misma línea y no baja, sólo vuelve al principio. Ayuda por favor!!!!!!

hmr5535
Publicado: 07/04/2012 12:29 pm

amigo muchas gracias por toda la información me ha sido de mucha utilidad

Jorge
Publicado: 26/06/2012 2:22 pm

$pdf->addJpegFromFile(“./images/min.jpg”, 5, 5);

Funciona bien, yo también tenía problemas para mostrar imágenes.

Saludos.

tlg.geovanny
Publicado: 27/07/2012 2:42 pm

pana tengo una base de datos en mysql y en una tabla tengo un campo dond sta la ruta de la imagen como agopara a esa ruta de l aimagen convertirla n pdf por ejemplo el fin de sto es mostrar un reporte individual de un producto con sus datos e imagen que estan n la BDD y necesito extrar del msql pa convertirlos n un pdf todo eso

Alex
Publicado: 03/09/2012 12:16 pm

Rodwin, tu problema se debe a que seguramente utilizaste el codigo php embebido en html….
Haz la prueba de este modo:

Diego Martinez
Publicado: 25/09/2012 10:45 pm

no me funciona
$pdf->addJpegFromFile(“.C:\xampp\htdocs\probando\admin/exel.jpg”, 5, 5); alguien me podría ayudar ya intente con todos lo métodos posibles y no funciona no me inserta las imágenes

Jen
Publicado: 26/11/2012 9:46 pm

hola, me funciono super este ejemplo, pero no pude insertarle la imagen al pdf, y me gustaria saber como generar el pdf de una consulta, es decir que me muestre en pdf solo el resultado que consulto, mas no todo los datos en la base de datos, porfis ayudame que lo necesito urgente, te dejo mi correo gultimas@hotmail.com

Adrian Leyva
Publicado: 01/03/2013 3:30 am

que tal, disculpa que la molestia, revise tus tutoriales anteriores y me gustaria saber como puedo crear el pdf, con la extraccion de datos de MySQL y agregarle una imagen, ya que le intente poner la imagen y marca error, dice archivo dañado, espero poder contar con tu ayuda…

selectFont('fonts/Courier.afm');
$pdf->ezSetCmMargins(2,2,2,2);
$pdf->ezImage("img.jpg", 0, 420, 'none', 'left');

$conexion = mysql_connect("localhost:3307", "root", "darck251");
mysql_select_db("pmx", $conexion);
$queEmp = "SELECT id, nombre, password FROM sys_user ORDER BY nombre ASC";
$resEmp = mysql_query($queEmp, $conexion) or die(mysql_error());
$totEmp = mysql_num_rows($resEmp);

$ixx = 0;
while($datatmp = mysql_fetch_assoc($resEmp)) {
$ixx = $ixx+1;
$data[] = array_merge($datatmp, array('id'=>$ixx));
}
$titles = array(
'id'=>'ID',
'nombre'=>'Usuario',
'password'=>'Password',
);
$options = array(
'shadeCol'=>array(0.9,0.9,0.9),
'xOrientation'=>'center',
'width'=>500
);
$txttit = "Sistema - Usuarios\n";
$txttit.= "Total de Usuarios registrados en el sistema. \n";

$pdf->ezText($txttit, 12);
$pdf->ezTable($data, $titles, '', $options);
$pdf->ezText("\n\n\n", 10);
$pdf->ezText("Fecha: ".date("d/m/Y"), 10);
$pdf->ezText("Hora: ".date("H:i:s")."\n\n", 10);

$pdf->ezStream();
?>

Yeid
Publicado: 21/11/2013 8:37 am

Buenos dias

me preguntaba si esta librería de R&OS necesita algo adicional para que funcione en un servidor linux ??
lo desarrollé en Windows y todo muy bien , pero al desplegarlo en el servidor de una empresa resultó ser S.O Linux y no funciona, saca unas lineas raras, como que no es capaz de convertir el codigo a pdf, un trozo de estas a continuación :

%PDF-1.3 %âãÏÓ 1 0 obj <> endobj 2 0 obj <> endobj 3 0 obj << /Type /Pages /Kids [6 0 R ] /Count 1 /Resources << /ProcSet 4 0 R /Font <> /XObject <> >> /MediaBox [0.000 0.000 595.280 841.890] >> endobj 4 0 obj [/PDF /Text /ImageC ]

Alfierys
Publicado: 14/02/2014 9:18 am

Este post me ha gustado porque tiene muy buenas sugerencias, el ejemplo al principio para colocar imagenes al principio no me funcionaba, pero probando con algunas sugerencia resulto, lo primero es que no me mostraba la imagen con ezImage() para nada, luego con el comentario que debía poner ob_end_clean(); antes del $pdf-> ezStream(); y nada, pero leí que debía agregar otro slash(/) a la ruta donde esta la imagen y si me resulto quedando el código de esta manera:

selectFont(‘../../fonts/Helvetica.afm’);

$pdf->ezText(“PDF con Imagenes en PHP\n”,20);
$pdf->ezText(“Ejemplo de inclusión de imagenes en pdf\n\n”,12);
$pdf->ezImage(“../..//cintillo_supe.jpg”, 0, 420, ‘none’, ‘left’);

$pdf->ezText(“Fecha: “.date(“d/m/Y”),10);
$pdf->ezText(“Hora: “.date(“H:i:s”),10);
$pdf->ezText(“unijimpe”);
ob_end_clean();
$pdf->ezStream();
?>

$pdf->ezImage(“../..//cintillo_supe.jpg”, 0, 420, ‘none’, ‘left’); AQUI FUE DONDE COLOQUE EL OTRO SLASH //cintillo_supe.jpg

Jose Luis Garcia Barrera
Publicado: 24/04/2015 11:04 am

Me dice error al cargar pdf alguien sabe porque :(

diego
Publicado: 27/05/2015 3:04 pm

Hola realize todos los post sobre las imagines pero con cualquiera me manda este error:

out of memory.

Alguien sabe por que?

paty
Publicado: 25/06/2015 9:39 am

estoy haciendo el ejemplo de la imagen pero veo que solo funciona con la imagen del ejemplo asi a otra imagen le ponga el mismo nombre nunca sale la imagen en el pdf, solo la del ejemplo, esto porque sucede

 

Comentar

En este blog los comentarios están moderados, serán mostrados cuando el administrador los apruebe. Por favor, evita comentarios ofensivos u obscenos por que no serán aprobados.
Si deseas publicar código fuente debes hacerlo entre las etiquedas <code> y </code>, además debes reemplazar los carácteres < por &lt; y > por &gt;.

(Requerido)

(Requerido, no será publicado)

(Requerido)

(Tags aceptados: <a> <em> <strong> <code> <ul> <li>)