Esta es una versión beta (pero utilizable). La extensión utiliza la librería FPDF para generar grillas (grids) similares a las generadas por CGridView (widget que se utiliza en los views de admin)
Requirements ¶
- Probado con Yii 1.1
- FPDF 1.7 (incluida en la extensión)
Usage ¶
Copiar la carpeta pdf en protected/extensions. Si se guarda en otra ubicación se debe modificar la linea Yii::import('ext.pdfGrid.fpdf.PDF'); en el archivo EPdfGrid.php
El uso es muy similar a CGridView con algunas limitaciones y el agregado de la variable config y filename
$this->widget('ext.pdf.EPDFGrid', array(
'id' => 'informe-pdf',
'fileName' => 'Informe en PDF',//Nombre del archivo generado sin la extension pdf (.pdf)
'dataProvider' => $dataProvider, //puede ser $model->search()
'columns' => array(
'columnName1',
'columnName2',
'columnName3',
array(
'name' => 'columnName4',
'value' => '$data->relationName->value',
),
),
'config' => array(
'title' => 'Libro Diario',
'subTitle' => 'Informe Al: '.$model->fecha,
'colWidths' => array(40, 90, 40, 70),
),
));
Opciones de configuración ¶
La opción config tiene los siguientes atributos y valores por defecto:
pdfSize (A4)
Parametro size para FPDF.
Posibles valores: A3, A4, A5, Letter, Legal
title ('')
Título que aparecerá en el PDF
subTitle ('')
Subtítulo
tableWidth (275) Ideal para A4
Ancho total de la tabla
rowHeight (6)
Altura de las filas
colAligns (null)
Array con alineación de las columnas ('L', 'C', 'R') por defecto L para todos
Ej: array('C', 'L', 'C')
La longitud del array debe ser menor o igual a la cantidad de columnas
Si la longitud es menor, a las columnas restantes se les aplicará la alineación L
colWidths (null)
Array con el ancho de cada columna. Por defecto se calcula tableWidth/cantColumnasVisibles
Ej: array(40, 90, 70)
La longitud del array debe ser menor o igual a la cantidad de columnas
Si la longitud es menor, se calculará la longitud de las columnas restantes
showLogo (false)
Valor booleano que determina si en la cabecera se mostrara la imagen ubicada en el atributo imagePath
imagePath (YiiBase::getPathOfAlias('webroot').'/images/logo.jpg')
Imagen a mostrar si showLogo está en true
headerDetails (false)
Valor booleado que determina si se mostrarán algunos detalles predeterminados en la cabecera.
En la versión actual los detalles son modificables solo por codigo. Se debe editar el archivo ext.pdfGrid.fpdf.PDF en la función Header
Los detalles que aparecerán en la cabecera son los siguientes
$txt = "Emitido por: ".Yii::app()->user->name."\n";
$txt .= "Fecha : ".date('d/m/Y')."\n";
$txt .= "Página ".$this->PageNo()."/{nb}"; // nro de pagina
Ejemplo ¶
Limitaciones ¶
- El valor de las columnas solamente pueden ser texto plano, no se procesarán por ejemplo 'columnName:html'
- Para cambiar fuentes y colores se debe editar el código de la extensión. Se debe buscar las funciones renderTableHeader y renderTableBody en ext.pdfGrid.EPdfGrid
FPDF error: Some data has already been output, can't send PDF file
I have tried extension,I got this error,during my test,can you help me ,to solve it.
reply
You must add :
ob_clean();
Where tom write that line
tell me,where I have to write ob_clen().
Thanx,it is working now.
I have wriiten it,before caling extension ,& working correctly.
Please add support for UTF
Please add support for UTF
array( 'name' => 'Função', 'value' => '$data->funcao', ),
outputs as Função
Update:
the data on the database outpusts correctly with the utf conversion function included on this extension. But please add support so we can add any other UTF on the "Name" parameter because it shows "Função" as "Função"
Filas impares en negrita
¿Por qué si showLogo=>true, el PDF renderiza las líneas impares en Negrita?
Headers
No puedo cambiar los Headers de las columnas, no esta tomando los que yo le indico
Solucion a Headers
Para los que lo necesiten, para que tomen los headers que le indiques cambia estas lineas en el metodo renderTableHeader
if(isset($column->header)) $rowHeader[] = $column->header; else $rowHeader[] = $column->grid->dataProvider->model->getAttributeLabel($column->name);
utf8
Is there any option to enable utf8??? because words with letters like 'ó' doesn't display well...
If you have any questions, please ask in the forum instead.
Signup or Login in order to comment.