mpdf rowspan multiples paginas

Buenas tardes, vengo con una pregunta la cual tengo mucho tiempo buscando en la red y no he encontrar nada al respecto, la verdad ya estoy desesperado, el punto es que estoy armando un reporte de Yii y para eso estoy usando mpdf, en dicho reporte en determinado momento se crea una tabla, con la informacion de los participantes de un evento, el problema viene cuando muchos participantes vienen de un mismo colegio. cuando son por ejemplo 50 participantes del mismo colegio en la columna COLEGIO el <TD> tendrá un $rowspan = 50 automaticamente la extension reduce el tamaño de la letra, la tabla, para forzarlo a entrar en 1 pagina, necesito alguna manera de cortar la tabla y continuar en la siguiente. por favor, ya estoy desesperado! no encuentro nada!! >.<

Hola wasakaca2.

Debes especificar más como estas haciendo las cosas, poner el codigo de la función que genera el informe y mostrar como estas creando la vista, pero creo que necesitas utilizar la función.




 ...

 $mpfd->AddPage(); //esta función hace un salto de pagina, que creo es lo que necesitas.

 ...



Saludos.

Hoal Gifrancohe, la cuestion es que creo que complique bastante micodigo, pero intentaré ponerlo todo

la funcion que genera el "Acta" es el siguiente




public function actionGenerarCertificados() {

		

		$id = $_GET['id'];

		$evento = Yii::app()->db->createCommand("SELECT iddescripcionevento, idautenticacion FROM tbl_evento WHERE id = ".$id)->queryRow();

		$autenticacion = Yii::app()->db->createCommand("SELECT id FROM tbl_autenticacion WHERE id = ".$evento['idautenticacion'])->queryRow();

		$descripcionevento = $evento['iddescripcionevento'];

		

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

		

		$this->layout = "/layouts/stylepdf.css";

		

		$criteria= new CDbCriteria;

		$criteria->condition='idevento='.$id.' AND estatusaprob = TRUE';

		$criteria->order = 'idestructura ASC, id ASC';

		

		$dataProvider->setCriteria($criteria);

				

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

		$mPDF1->SetTitle('Informe'.$id);

		

	

		

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

		$mPDF1->WriteHTML("<style>body{	background-image: url('images/FondoActa.jpg'); }</style>" );


			

		//GENERANDO EL ACTA

		

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

					

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


		$mPDF1->Output ('Certificados-#',EYiiPdf::OUTPUT_TO_BROWSER);

		


	}



ESTE SERIA EL "RedirectActa.php"




<META charset="UTF-8">

<table width="100%" border="1" repeat_header="1" style="overflow: hidden; border-collapse: collapse;">

<thead>

	<tr>

		<th width="20%">Organo / Ente</th>

		<th width="5%"> N° </th>

		<th width="20%"> Nombres y Apellidos </th>

		<th width="10%"> Cédula </th>

		<th width="20%"> Firma </th>

	</tr>

</thead>

<tbody>

<?php $this->widget('zii.widgets.CListView', array(

	'dataProvider'=>$dataProvider,

	'itemView'=>'Certificados/Acta',

		'enablePagination'=>false,

		'template'=>"{items}\n{pager}",

		

	

)); ?>

</tbody>



Y ESTE SERIA EL "Acta.php"




<?php

$idprimeraestructura = Yii::app()->db->createCommand("SELECT * FROM tbl_asistencia WHERE idestructura = ".$data->idestructura." AND estatusaprob = TRUE AND idevento = ".$data->idevento." ORDER BY idestructura ASC, id ASC LIMIT 1;")->queryRow();

$rowspan = Yii::app()->db->createCommand("SELECT count(*) FROM tbl_asistencia WHERE idestructura = ".$data->idestructura." AND estatusaprob = TRUE AND idevento = ".$data->idevento.";")->queryScalar();


?>


<tr>

	<?php 

	if (($idprimeraestructura['id']) == ($data->id) )

	{

		echo "<td align='center' width='15%' rowspan='".$rowspan."'>";

		echo $data->idestructura0->denominacion;

		echo "</td>";


	}

	?>	

	<td align="center" width="5%"><?php echo CHtml::encode($index+1); ?></td>

	<td align="center" width="30%"><?php echo ucwords(strtolower($data->idpersona0->nombre.'<br /> '.$data->idpersona0->apellido)); ?></td>

	<td align="center" width="15%"><?php echo CHtml::encode(number_format($data->idpersona0->cedula,'0',',', '.')); ?></td>

	<td align="center" width="20%">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</td>

</tr>



El problema viene siempre que la tabla del acta tiene en la columna "Organo / Ente" una cantidad de participantes mayor a 30 que es la cantidad maxima aproximada de participantes que caben en una sola página (menos en la primera pagina que tiene el encabezado). como en este caso solo se imprime 1 vez el <td> correspondiente al "Organo / Ente" con el determinado numero de asistentes como $rowspan entonces la extension no puede automaticamente cortar la tabla y seguirla en la siguiente pagina, o no sé si necesito hacer algo para que si lo haga. automaticamente reduce el tamaño de la letra para que pueda caber todo en una misma página, tengo mucho tiempo buscando y no se como se pueda hacer. espero me puedas ayudar xD

PD: Creí haber leido en algun lado que el $mPDF1->AddPage(); Como y lo uso, se puede usar para cambiar la orientación de la hoja.




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



Buenas Wasakaca2.

Considero que no deberias mezclar los conceptos, ya que si estamos trabajando con MVC, en las vistas pones lo que quieres visualizar, y vos estas colocando cosas que deberian ir en la vista en el controller. Solo es una sugerencia para que trabajes mucho mas ordenado y facil.

Si lograras cuadrar toda la vista como quieres que se vea y desde el controller solo cargas el Dataprovider, y lo envias a la vista, ya solo seria cuestion de adicionar estilos mediante CSS, y con una variable de control podrias manejar la cantidad de registros que quieres por pagina.

Saludos.

Hola gifrancohe, primero que nada muchas gracias por tomarte el tiempo de responderme, tienes razon en cuanto a la parte de organizarla vista, ya corregí ese detalle, mi problema con el rowspan viene cuando vienen muchos participantes de un mismo organismo, y son varios organismos en la misma acta. entonces pasa A- las tablas se cortan para colocar un bloque muy grande en otra pagina, dejando mucho espacio en blanco ó B- Cuando el organismo por ejemplo tiene 100 personas TODO lo coloca en 1 sola pagina reduciendo el tamaño de la letra dentro de la tabla haciendo la misma ilegible.

Dentro de lo posible me gustaria que me ayudaran por favor.