[RESUELTO] generando PDF con imagenes

Hola a todos

no se si corresponde que postee aca, pero espero que alguien lo use y me de una mano

estoy usando la extension TCPDF

y quiero generar un carnet de 8.5cmx5.5cm

estoy cerca de lograrlo… creo

mis problemas:

a) si pongo el tamaño de 8.5x5.5, me genera 2 hojas en vez de una. solucion, agrande la hoja y al momento de imprimir "ajusto" la impresion

b - me da error con algunas imagenes, pero con otras no. el error

"an error has occurred while trying to use this document"

si hago echo $tablealign; en vez de $pdf->Output("example_004.pdf", "I"); me muestra bien la imagen

c) no logro que me separe las celdas, por eso agregue "<tr><td></td></tr>"

adjunto imagen del carnet y el codigo que uso

(si hay una forma mejor de hacerlo, por favor diganmela)





$titulo=$matricula->titulo->descripcion;

$especialidad=$matricula->especialidad->descripcion;




$format=array(8.5,5.5);

$format=array(20,12);

$pdf = Yii::createComponent('application.extensions.tcpdf.ETcPdf',

                            'P', 'cm', $format, true, 'UTF-8');

$pdf->SetCreator(PDF_CREATOR);

$pdf->SetAuthor(Yii::app()->name);

$pdf->SetTitle("Carnet matricula");


$pdf->setPrintHeader(false);

$pdf->setPrintFooter(false);


$pdf->SetTopMargin(3.4);

$pdf->AliasNbPages();

$pdf->AddPage();

$pdf->SetFont("times", "BI", 12);







// create some HTML content




$tablealign = <<<EOT


<table>

    <tr>

        <td  style="text-align:center;" >

            <img src="$imagen" border="0" height="120" width="120" />

        </td>

        <td>

             <table style="width: 200px; text-align:right;">

                 <tr style="height:100px;">

                    <td>$persona->apellido</td>

                 </tr>

<tr><td></td></tr>

                <tr style="height:100px;" >

                    <td>$persona->nombre</td>

                </tr>

<tr><td></td></tr>

                <tr  style="height:100px;" >

                    <td>$persona->nro_documento</td>

                </tr>

<tr><td></td></tr>

                <tr style="height:100px;">

                    <td>$titulo </td>

                </tr>

<tr><td></td></tr>

                <tr style="height:100px;">

                    <td>M:$matricula->matricula-L:$matricula->libro-F:$matricula->folio</td>

                </tr>

<tr><td></td></tr>

                <tr style="height:100px;">

                    <td>$especialidad</td>

                </tr>

             </table>

         </td>

   </tr>

</table>

EOT;





$pdf->writeHTML($tablealign, true, 0, true, 0);





// reset pointer to the last page

$pdf->lastPage();







//echo $tablealign;

$pdf->Output("example_004.pdf", "I");



bien, resolvi a y c

menos el de la imagen (item "b" )

esta imagen no funciona http://i50.tinypic.com/2cc1lt.gif

pero esta si http://i48.tinypic.com/2qi2ooo.jpg

el error no tiene que ver con el formato, hay otras jpg que no funcionan y hay gif que si funcionan

help!!!

el codigo nuevo





$pdf->MultiCell(3, 0.25, $persona->apellido,      0, 'L', 0, 1, '5.4', '', true);

$pdf->MultiCell(3, 0.25, $persona->nombre,      0, 'L', 0, 1, '5.4', '', true);

$pdf->MultiCell(2.5, 0.25, $tipo_doc.' '.$persona->nro_documento,      0, 'L', 0, 1, '6', '', true);

$pdf->MultiCell(3, 0.25, $titulo,      0, 'L', 0, 1, '5.4', '', true);

$pdf->MultiCell(3, 0.25, "$matricula->matricula / Libro:$matricula->libro",      0, 'L', 0, 1, '5.4', '', true);

$pdf->MultiCell(3, 0.25, $especialidad,      0, 'L', 0, 1, '5.4', '', true);


$pdf->Image($imagen, 1, 1.5, 3, 3, '', '', '', true, 600, '',false,false,1);



el problema es el tamaño de la imagen… aparentemente…

tengo que reducirla a 5k aprox y funciona

use la extension http://www.yiiframework.com/extension/image/

si alguien sabe como hacerlo mejor… se agradece el aporte

yo de nuevo

hice una prueba muy sencilla

baje de http://sourceforge.net/projects/tcpdf/files/ los fuentes

los puse en el host y ejecute el ejemplo 9

http://localhost/tcpdf/examples/example_009.php

y funciono ok

luego

  1. cree una webapp nueva (test)

  2. instale la extension tcpdf

  3. y modifique el index.php poniendo el codigo del ejemplo 9

    lo unico que modifique fue




  require_once('../config/lang/eng.php');

  require_once('../tcpdf.php');



lo cambie por




  Yii::import('application.extensions.*');

  require_once('tcpdf/config/lang/eng.php');

  require_once('tcpdf/tcpdf.php');



puse la imagen "image_demo.jpg" en /images

cambie




$pdf->Image('../images/image_demo.jpg', 50, 50, 100, 150, '', 'http://www.tcpdf.org', '', true, 150);



por




$pdf->Image('images/image_demo.jpg', 50, 50, 100, 150, '', 'http://www.tcpdf.org', '', true, 150);true, 150);



y… error

ahora la suplica:

alguien puede decirme si hago algo mal, o es un bug del framework?

alguien con tiempo, puede hacer la misma prueba que hago yo

gracias

Hola Comunidad

les cuento que hice otra prueba, con la libreria de http://www.fpdf.org/

probe el tutorial2 por fuera del framework y luego usando el framework

y me da el mismo error

(con imagenes grandes, con imagenes pequeñas, todo funciona ok)

por lo que es un problema del framework, pero no tengo idea de como hacer un debug o donde puedo buscar el error

desde ya les agradeceria una respuesta

saludos

Bueno

lo bueno es que lo hice andar en otro servidor

lo malo es que necesito hacerlo andar en el servidor que no anda

despues del error, hago un back con el browser (en js seria un history(-1))

y me muestra lo suguiente

y luego el codigo html de la pagina (como deberia ser)

alguna idea? una ayuda!!!

puse en la vista




 error_reporting(E_ALL);



que hago? help

Ya lo solucioné

el problema era que estaba creando el archivo pdf desde la vista, y hay que hacerlo desde el controlador

el que sabe…sabe, el que no…pierde mucho tiempo hasta que aprende

Gracias por el post. Me sirve de guía preliminar para habilitar la generación de PDFs en mi proyecto.

Cualquier cuestión adicional a lo que has escrito, la posteo.

No han probado utilizar BIRT, yo manejo FPDF, la verdad se me hace una buena herramienta, me han comentado que TCPDF y ZPDF son parecidos los tres, pero hace poco que estuve realizando un código en FPDF encontré un gran error o no se si lo no encontré la manera idónea de solucionarlo…, pero el problema era que necesitaba obtener un listado de datos de x base de datos…, ese no era el problema utilice multicell, pero también necesitaba mostrar el ID correspondiente a cada uno tampoco era el problema el problema era que tenían que ir pintados un registro de un color y el otro de otro y mas diseño, si lo logré hacer, pero el ID quedaba mas arriba que la información correspondiente, y no se pudo acomodar las columnas, pero con BIRT no tuve ese problema de hecho fue mas rápido menos posicionamiento… y de una mánera mas fácil de tratar obtener los datos de la base de datos… usando ECLIPSE fue como pude ver eso de BIRT, solo tienes que configurar un servidor local TOMCAT en caso de que tengas windows, o poner tu servidor un servidor TOMCAT desde eclipse te da el modo diseño para que indiques imágenes tipo de tablas de datos, y solo arrastres el nombre de campo y lo sueltes donde desees que aparezca, te recomienda usar esto ya que comente en la libreria FPDF no pude solucionar ese problema…

Gracias por el dato

para los que les interesa (y tienen tiempo), también existe JasperReports

y también se puede integrar con php de la misma manera que BIRT

una búsqueda por google y van a ver varios tutorials

saludos

Gente:

Estoy usando la libreria TCPDF. No tengo inconveniente para generar los pdf, con tablas y demas cosas. El asunto es que deseo insertar una imagen dentro de una de las celdas de la tabla y no le estoy encontrando la solucion al asunto. Quien pueda darme una mano le estare agradecido.

Ya está resuelto mi problema, eran unos ajustes que no tuve presente. Si alguno tiene algun problema me avisa y le doy una mano. Abrazos.

hola comunidad… yo genero el reporte con mpdf el problema es q necesito q aparte de los datos q me estoy trayendo del modelo principal necesito q tambien me muestre otros datos q pertenecen a otros modelos… adjunto el codigo, a ver si alguien me puede decir como hacerlo! por ejemplo llamar de la tabla minutaasis los nombres y el tipo de asistente… el ya genera la consulta en el update, pero no se como hacer q me los muestre en el reporte!





<?php


$pdf = Yii::createComponent('application.extensions.MPDF57.mpdf');




$html='

<link rel="stylesheet" type="text/css" href="'.Yii::app()->request->baseUrl.'/css/pdf.css" />


<table id="yw0" class="detail-view2">

<tr class="principal">

<td colspan="2" align="center"><b>Minuta</b></td>

<tr>

<tr class="odd"><td> <b>N° minuta</b> </td><td> '.$model->id_minuta.'</td></tr>


       <tr class="even">

 <td> <b>Proyecto</b> </td><td> '.$model->proyecto.'</td>

      </tr>

      

      <tr class="odd">

             <td> <b>Municipio</b> </td><td> '.$model->id_municipio.'</td></tr>

    

      <tr class="even">

 <td> <b>Fecha Inicio</b> </td><td> '.$model->fecha_inicio.'</td>

      </tr>

      

      <tr class="even">

 <td> <b>Fecha Fin</b> </td><td> '.$model->fecha_fin.'</td>

      </tr>

     

      

      <tr class="odd">

<td> <b>Lugar</b> </td><td> '.$model->lugar.'</td></tr>

      

      <tr class="even">

 <td> <b>Puntos a tratar</b> </td><td> '.$model->puntos_tratar.'</td>

      </tr>

      

      <tr class="even">

 <td> <b>N° Observaciones</b> </td><td> '.$model->observaciones.'</td>

      </tr>

      

      <tr class="odd">

<td> <b>Proyecto</b> </td><td> '.$model->proyecto.'</td>

     </tr>

     

<tr class="odd">

<td> <b>Hora Inicio</b> </td><td> '.$model->hora_inicio.'</td>

     </tr>


<tr class="odd">

<td> <b>Hora Fin</b> </td><td> '.$model->hora_fin.'</td>

     </tr>


<tr class="odd">

<td> <b>Asunto</b> </td><td> '.$model->asunto.'</td>

     </tr>


<tr class="odd">

<td> <b>Resumen</b> </td><td> '.$model->resumen .'</td>

     </tr>


</table>







Una pregunta eso se hace solo cuando el pdf llama cosas del modelo actual, si quisiera llamar datos de un modelo B teniendo en cuenta un campo del modelo actual como aria para llamar dichos datos

HOLA. LOGRASTE SOLUCIONAR ESO…

ME INTERESA SABER COMO SE HACE ESO. SALUDOS

Segun lo que puedo ver, y lo que entiendo que necesitas, debes usar la relación que tiene tu modelo principal supongamos A con el modelo B, seria algo asi:




 <tr class="odd">

     <td> 

          <b>Asunto</b> 

     </td> 

      <td> 

         '.$model->RelacionAconB->tipoasistente.'

      </td>

 </tr>



Nota: Es claro que en el modelo A, en el componente Relations debe haber algo asi supongamos:




  public function relations()

  {

            return array(

                'RelacionAconB' => array(self::BELONGS_TO, 'Minutaasis', 'idnombre'),

            );

  }



De esta forma ya podrias traer informacion de tantos modelos como tengas relaciones con estos.

Espero haberme hecho entender.

Saludos.