Yii 1.1: pdf-grid

Extensión para generar Grids similar a CGridView en PDF con FPDF
11 followers

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

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

Total 9 comments

#14512 report it
ferminako at 2013/08/19 08:50am
utf8

Is there any option to enable utf8??? because words with letters like 'ó' doesn't display well...

#13781 report it
Juan David Rodriguez at 2013/06/25 09:09am
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);
#13780 report it
Juan David Rodriguez at 2013/06/25 09:02am
Headers

No puedo cambiar los Headers de las columnas, no esta tomando los que yo le indico

#11188 report it
Nacesprin at 2012/12/24 11:06am
Filas impares en negrita

¿Por qué si showLogo=>true, el PDF renderiza las líneas impares en Negrita?

#10423 report it
WebDevPT at 2012/10/26 11:23am
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"

#9888 report it
Abhishek Shah at 2012/09/19 05:41am
Thanx,it is working now.

I have wriiten it,before caling extension ,& working correctly.

#9887 report it
Abhishek Shah at 2012/09/19 05:35am
Where tom write that line

tell me,where I have to write ob_clen().

#9882 report it
Co-k-ine at 2012/09/19 03:18am
reply

You must add : ob_clean();

#9879 report it
Abhishek Shah at 2012/09/19 02:11am
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.

Leave a comment

Please to leave your comment.

Create extension
Downloads