Crear Reporte PDF (EPDF) a partir de un $dataProvider

Buenas tardes, vengo nuevamente al foro en busqueda de una ayuda, ahora me encuentro generando en base a un sistema una especie de reporte, el cual debe imprimir por cada uno de los registros 1 hoja. quiero crear un arhivo pdf en el que se generen certificados (titulos, diplomas) por un curso completado. en mi sistema primero se crea un evento el cual sera el curso taller o charla a realizar, luego se crean los participantes de ese evento en especifico. una vez con al informacion ingresada en el evento que quiero en el index. me detalla un pequeño resumen de los participantes del evento. pues bien quiero generar un pdf en el que pueda manipular los datos y organizarlos por ejemplo




 _________________________________________

|                                         |

|         BANNER BANNER BANNER            |

|_________________________________________|

|                                         |

|                                         |

|                                         |

|             Nombre Apellido             | 

|                 cedula                  |

|                                         |

|            Titulo del EventO            |

|                                         |

|                                         |

|    Expositor                            |

|                                         |

|_________________________________________|



Tengo mi index donde cree mi botón




<?php echo CHtml::button('Generar PDF', array('class'=>'btn-primary', 'onclick' => 'js:document.location.href="../GenerarCertificados"')); ?>



Tengo mi funcion que genera el PDF




public function actionGenerarCertificados() {

	

		$dataProvider = new CActiveDataProvider('TblAsistencia', array('pagination' => false ));

		$this->layout = "/layouts/pdf";

	

		$mPDF1 = Yii::app()->ePdf->mpdf();

	

	

		if ($dataProvider === null)

		{

			$mPDF1->WriteHTML($this->Cell(0, 6, 'No existen Registros para Reportar',0,1,'C'));

		} else {

			//$mPDF1->WriteHTML( $this->render('index',array('dataProvider' => $dataProvider),true));

			$mPDF1->WriteHTML("<h1>Hola Mundo</h1>");

			$mPDF1->WriteHTML("<h1>Hola Mundo</h1>");

			

		}

	

		$mPDF1->Output ();

	

	}



Lo que no se es como usar el $dataProvider para colocar donde yo quiero las cosas que me trae. no se si me explico necesito que alguien me explique si lo que quiero hacer es posible o si hay alguna otra forma de hacerlo. gracias

Esta es mi funcion. tengo capturo el id del evento al que pertenecen los participantes, y le coloco una imagen de fondo que es del certificado como tal, ahora necesito crear por cada registo que consiga en el index una pagina y poder jugar con los $model->idpersona0->nombre y esas cosas y colocarlos en ciertos lugares en especifico. alguien me puede ayudar? por favor T_T




public function actionGenerarCertificados() {

	

		

		

		$id = $_GET['id'];

		

		$dataProvider = new CActiveDataProvider('TblAsistencia', array('pagination' => false, ));

		

		$this->layout = "/layouts/pdf";

		

		$criteria= new CDbCriteria;

		$criteria->condition='idevento='.$id;

		$dataProvider->setCriteria($criteria);

		

		

		

		

		$mPDF1 = Yii::app()->ePdf->mpdf();

		$mPDF1->AddPage('L'); // Cambiar la orientacion de la vista

		

		

		if ($dataProvider === null)

		{

			

			$mPDF1->WriteHTML($this->Cell(0, 6, 'No existen Certificados para Generar',0,1,'C'));

			

		} else {

			

		$mPDF1->WriteHTML( $this->render('index',array('dataProvider' => $dataProvider),true));

		$mPDF1->WriteHTML("<style>

							body

							{

								background-image: url('images/FondoDiploma.jpg');

							}

						  </style>");

		

		$mPDF1->Output ();

		

		}	

	}



yo hice un sistema en el cual tuve que hacer eso, lo que no me queda claro es como lo quieres mostrar pq yo lo que hacia era dibujar el html como queria que saliera y lo ponia en una vista asi:




<?php $pdf = Yii::createComponent('application.vendors.mpdf.mpdf');

$dataProvider = $_SESSION['Anexo2']->getData();

$contador=count($dataProvider);


$html.='

<table align="center"><tr>

<td align="center"> <b>Contraloria General de la Republica</b></td></tr>

<tr></tr>

<tr>

<td align="center"> <b>LISTADO DE DENUNCIAS</br></b></td></tr>


</tr></table>

Total Resultados: '.$contador.' 

<p>=====================================================================================================</p>    

     <table class="detail-view2" repeat_header="1" cellpadding="1" cellspacing="1"

width="100%" border="1">

          <tr class="principal">

         

                <td align="center" class="principal" width="7%"><div style="font-size:22px"><strong>&nbsp;No. Expediente</strong></div></td>

                <td align="center" class="principal" width="9%"><div style="font-size:22px"><strong>&nbsp;Entidad</strong></div></td>

                <td align="center" class="principal" width="9%"><div style="font-size:22px"><strong>&nbsp;Provincia</strong></div></td>

                <td align="center" class="principal" width="15%"><div style="font-size:22px"><strong>&nbsp;Municipio</strong></div></td>

                <td align="center" class="principal" width="20%"><div style="font-size:22px"><strong>&nbsp;Fecha de registro</strong></div></td>

                <td align="center" class="principal" width="20%"><div style="font-size:22px"><strong>&nbsp;Fecha de ocurrencia</strong></div></td>

                <td align="center" class="principal" width="20%"><div style="font-size:22px"><strong>&nbsp;Fecha de detecci&oacute;n</strong></div></td>

                <td align="center" class="principal" width="19%"><div style="font-size:22px"><strong>&nbsp;Fuente de detecci&oacute;n</strong></div></td>

                <td align="center" class="principal" width="19%"><div style="font-size:22px"><strong>&nbsp;Organismo</strong></div></td>

                <td align="center" class="principal" width="19%"><div style="font-size:22px"><strong>&nbsp;Estado</strong></div></td>


         </tr>

         

';


        $pp= date('d-m-y ');    

      $i=0;

      $val=count($dataProvider);

      while($i<$val){

    $html.='

        

         <tr class="odd">

            <td align="center" class="odd" width="12%"><div style="font-size:22px">&nbsp;'.$dataProvider[$i]["no_phc_a2"].'</div></td>

            <td align="center" class="odd" width="12%"><div style="font-size:22px">&nbsp;'.$dataProvider[$i]["entidadhcFk"]["enthc_nombre"].'</div></td>

            <td align="center" class="odd" width="5%"><div style="font-size:22px">&nbsp;'.$dataProvider[$i]["entidadhcFk"]["provinciaFk"]["prov_siglas"].'</div></td>

            <td align="center" class="odd" width="20%"><div style="font-size:22px">&nbsp;'.$dataProvider[$i]["entidadhcFk"]["municipioFk"]["mun_desc"].'</div></td>

            <td align="center" class="odd" width="20%"><div style="font-size:22px">&nbsp;'.$dataProvider[$i]["fecha_reg_a2"].'</div></td>

            <td align="center" class="odd" width="20%"><div style="font-size:22px">&nbsp;'.$dataProvider[$i]["fecha_ocu_a2"].'</div></td>

            <td align="center" class="odd" width="10%"><div style="font-size:22px">&nbsp;'.$dataProvider[$i]["fecha_det_a2"].'</div></td>

            <td align="center" class="odd" width="15%"><div style="font-size:22px">&nbsp;'.$dataProvider[$i]["fuenteDetFk"]["fuente_det_siglas"].'</div></td>

            <td align="center" class="odd" width="10%"><div style="font-size:22px">&nbsp;'.$dataProvider[$i]["entidadhcFk"]["orgaFk"]["orga_hc_siglas"].'</div></td>

            <td align="center" class="odd" width="10%"><div style="font-size:22px">&nbsp;'.$dataProvider[$i]["estadoA2Fk"]["estado_a2_desc"].'</div></td>

            ';

$html.='</tr>

      

'; $i++;

}


$html.='</table>';

$html.='<table>

<tr class="principal">

         

                <td colspan="13"  class="principal" width="12%">

				

               <p>---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------</p>

                </td>

         </tr> 

$html.=</table>';

$html.='<p align="right"><strong>&nbsp;Fecha de impresión:</strong>'.$pp.'</p>'; 


$mpdf=new mPDF('', 'LETTER-L', '10','tahoma','5','5','5','5','5','5','L');

$mpdf->WriteHTML($html);

$mpdf->Output('Reporte.pdf','D');

exit; ?>



en el controller lo llamaba asi:

creaba esta funcion:




 public function actionDinamicoColNivDir()

        {

            $this->render('dinamicoColNivDir(nombre de la vista)');

        }



y luego la añadia al accessRules:




array('allow', // allow admin user to perform 'admin' and 'delete' actions 

				'actions'=>array('admin','delete','DinamicoColNivDir'),

				'roles'=>array('admin hc','super'),



y listo, en mi caso en la vista admin, creé un botón para que me mostrara el reporte pdf a partir de la busqueda




array('label'=>'Ficha', 'url'=>array('DinamicoColNivDir')),



, pero manteniendo el diseño que hice en html previamente, ya lo demas seria configurar con la clase mpdf para darle las propiedades que quieras.

espero que te sirva

Hola epulgaron como estas, gracias por responder, cree mi propia vista como dices y esta quedando bastante bien, pero ahora tengo otro problema, necesito colocar una pagina despues de cada "Certificado" que seria la parte de atras del mismo, este lleva el contenid programatico ademas de una numeracion de certificado. mi problema es que puse como background-image el fondo del la parte delantera del certificado, y la parte trasera es distinta. hay alguna manera de colocar un backgound para las paginas pares y otro a las paginas impares? o insertar una pagina de otra vita? o se te ocurre otra manera de hacerlo? ya me estoy volviendo un poco loco con esto hahahahaha

a ver no me he topado con el caso en que deba realizarlos asi, de todos modos aqui te adjunto el link de mpdf mpdf para que consultes, pero por arriba vi que ellos usan en algunos de sus ejemplos como una especie de fondo gris, me imagino que seria solamente remplazarlo por la imagen de tu preferencia, se que mpdf toma algunas de las funciones de fpdf y este contenia el salto de pagina e incluso insertar dejando una pagina de por medio lo cual se asemeja bastante a lo que quieres aqui te dejo otra documentacion muy buena que me fue de mucha ayuda mpdf ++ espero que te sirva, aqui estamos para ayudarnos