Yii Framework Forum: Exportar del CGridView a PDF - Yii Framework Forum

Jump to content

Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

Exportar del CGridView a PDF Exportar la información de un registro a pdf Rate Topic: -----

#1 User is offline   Gabriel Duarte Martinez 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 5
  • Joined: 09-July 11

Posted 16 August 2011 - 11:22 AM

He leído varios temas en los que preguntan por un paso a paso de como exportar la información de un registro del CGridView a pdf, a continuación les muestro como hacerlo con la librería MPDF

- Lo primero que hacemos es bajarnos la ultima versión de MPDF de su pagina oficial http://www.mpdf1.com/mpdf/ y la colocamos en protected/extensions

- Copiamos en el controlador de la tabla a la que se hará el reporte la siguiente función:

   public function actionPdf($id)
    {
        $this->render('pdf',array(
            'model'=>$this->loadModel($id),
        ));
    }


- Colocamos pdf en la funcion accessRules() del mismo controlador para que los usuarios puedan acceder a la acción

- En la vista admin sustituir el arreglo de los botones por el siguiente:

 array(
            'class'=>'CButtonColumn',
                    'template' => '{view} {update} {delete} {pdf}',
                'buttons'=>array(
                        'pdf' => array(
                                'label'=>'Generar PDF', 
                                'url'=>"CHtml::normalizeUrl(array('pdf', 'id'=>\$data->id))",
                                'imageUrl'=>Yii::app()->request->baseUrl.'/images/pdf_icon.png', 
                                'options' => array('class'=>'pdf'),
                        ),
                ),
        ),


- En la vista view agregamos la vista de nuestro pdf en el menu:

 array('label'=>'Crear PDF', 'url'=>array('pdf','id'=>$model->id)),


- En mi caso la clave primaria del registro la puse como id en la base de datos, si en tu caso es "id_producto" o algo por el estilo debes cambiarlo cuando se pasa el dato a la vista.

- Y por ultimo tenemos el archivo pdf.php que estará en las vistas:

<?php
$pdf = Yii::createComponent('application.extensions.MPDF52.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>DATOS DEL CONTRATO</b></td>
<tr>
<tr class="odd"><td> <b>N° Control</b> </td><td> '.$model->num_control.'</td></tr>
<tr class="even"><td> <b>Trimestre Ejecucion</b> </td><td> '.$model->trimestre_ejecucion.'</td></tr>
<tr class="odd"><td> <b>Nombre Estado</b> </td><td> '.$model->estado0["nombre_estado"].'</td></tr>
<tr class="even"><td> <b>Empresa</b> </td><td> '.$model->empresa.'</td></tr>
<tr class="odd"><td> <b>Personal Actuante</b> </td><td> '.$model->personal_actuante.'</td></tr>
<tr class="even"><td> <b>Nombre Tipo Informe</b> </td><td> '.$model->informe0["nombre_tipo_informe"].'</td></tr>
<tr class="even"><td> <b>N° Contrato</b> </td><td> '.$model->num_contrato.'</td></tr>
<tr class="odd"><td> <b>Monto Contratado</b> </td><td> '.$model->monto_contratado.'</td></tr>
<tr class="even"><td> <b>Monto Auditado</b> </td><td> '.$model->monto_auditado.'</td></tr>
<tr class="odd"><td> <b>Porcentaje Ejecucion</b> </td><td> '.$model->porcentaje.'</td></tr>
<tr class="even"><td> <b>Objeto Contrato</b> </td><td> '.$model->objeto_contrato.'</td></tr>
<tr class="odd"><td> <b>Observaciones</b> </td><td> '.$model->observaciones.'</td></tr>
<tr class="even"><td> <b>Recomendaciones</b> </td><td> '.$model->recomendaciones.'</td></tr>
<tr class="odd"><td> <b>Monto Hallazgo</b> </td><td> '.$model->monto_hallazgo.'</td></tr>
<tr class="even"><td> <b>Origen Tramite</b> </td><td> '.$model->origen0["nombre_origen_tramite"].'</td></tr>
</table>

';
$mpdf=new mPDF('win-1252','LETTER','','',15,15,25,12,5,7);
$mpdf->WriteHTML($html);
$mpdf->Output('Ficha-Contrato-'.$model->num_control.'.pdf','D');
exit;
?>


- El icono del pdf se los dejo anexado.

Espero que les sea de mucha ayuda, mpdf es muy potente para encabezados y pie de pagina y la documentación está buenisima.

Twitter: @gabrielduarte77
Correo: gabrielduarte77@gmail.com

Otros Temas:
- Reportes en Yii a partir de una busqueda

Attached File(s)


1

#2 User is offline   itralarcon 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 1
  • Joined: 13-June 12

Posted 13 June 2012 - 12:12 PM

No entiendo cuando dice:

Quote

Colocamos pdf en la funcion accessRules() del mismo controlador para que los usuarios puedan acceder a la acción

0

#3 User is offline   JCS 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 57
  • Joined: 10-January 11
  • Location:Bogotá

Posted 13 June 2012 - 01:29 PM

Muy buen tutorial, a ver si alguna vez llego a usarlo, que creo que es bastante probable :P


View Postitralarcon, on 13 June 2012 - 12:12 PM, said:

No entiendo cuando dice:


en el controlador hay una función 'accessRules' casi al inicio del archivo, allí defines los permisos que tiene cada usuario para acceder a las diferentes acciones, lo que indica eso es que debes definir en esa función quien tiene permiso para acceder a la acción 'pdf', digamos que si queremos que todos los usuarios puedan hacerlo entonces seria así:

array('allow',  // allow all users to perform 'index', 'view', 'postSurvey', 'getSurveyConditions' actions
	'actions'=>array('index','view','pdf'),
	'users'=>array('*'),
),


si queremos que solo administradores pueda usar esta función, entonces seria algo así:

array('allow',  // allow all users to perform 'index', 'view', 'postSurvey', 'getSurveyConditions' actions
	'actions'=>array('admin','delete','pdf'),
	'users'=>array('admin'),
),


podrias cambiar el nombre de la acción 'actionPdf' por 'actionGeneratePdf' y en la función accessRules deberías entonces poner los permisos para 'generatePdf' y no 'pdf'.
0

#4 User is offline   jeriverod 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 9
  • Joined: 30-March 13

Posted 02 May 2013 - 03:20 PM

Hola a todos. Disculpen por revivir el tema, pero ¿hay alguna forma de imprimir solamente los datos contenidos en una vista, es decir que no me imprima todos los valores de la tabla de la base de datos? Y si es colocandole un botón para imprimir, a la vista mejor =D. Gracias y saludos.
Live & Learn
0

#5 User is offline   nkdos 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 47
  • Joined: 18-June 13

Posted 23 June 2013 - 09:48 PM

Excelente tutorial, me a servido un montón, ya estoy generando un PDF, pero hay cosas que aún no he logrado solucionar.

- Como agregar un header y/o header?



Gracias y Saludos!
0

#6 User is offline   jeriverod 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 9
  • Joined: 30-March 13

Posted 23 June 2013 - 10:08 PM

Hermano yo en la vista pdf.php coloque esta línea para agregar el header:
$header='<div><center><img src="'.Yii::app()->request->baseUrl.'/css/banner.png"/ height="145" width="100%"></center></div>';


Para el footer esta:
$mpdf->SetFooter(' {DATE j/m/Y}|Página {PAGENO}|Nombre cualquiera');


Igualmente si puedes explicarme como hiciste tus reportes me sería de gran ayuda. Necesito reportes individuales =/. Saludos y espero te haya servido.
Live & Learn
0

#7 User is offline   nkdos 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 47
  • Joined: 18-June 13

Posted 29 June 2013 - 02:56 PM

Saludos comunidad,

Gracias por las respuesta, pero tengo una gran duda, y es que de un momento a otro, ya no me funciona el PDF

la URL que me aparece es:

index.php?r=empleados/pdf&id=1

lo cual es correcto, pero me sale un error

No se encontró una página web para la siguiente dirección web: http://localhost/pro...leados/pdf&id=1

Lo raro es que antes me funcionaba :S

A que se puede deber esto?


Saludos
0

#8 User is offline   bocatadepanceta 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 1
  • Joined: 07-August 14

Posted 08 August 2014 - 05:11 AM

Gracias por el aporte comunidad, gran tuto...

Soy recien llegado y muy novato, asi que espero ayudar en lo pueda. Me gustaria que me indicaran algún post donde pueda generar el reporte a pdf con todo el grid.

Muchas gracias!!
0

Share this topic:


Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

1 User(s) are reading this topic
0 members, 1 guests, 0 anonymous users