Yii Framework Forum

Como usar mPDF de kartik para exportar a PDF


(Jose 2rcv) #1

Hola a todos
Estoy tratando de exportar a pdf un reporte de mi BD con el widget de Kartik que usa mPDF

Lo primero que hice fue con un contenido de prueba, pero cuando hago clic en el boton me sale una pagina con caracteres axtraños, si actualizo la pagina entonces si me abre el pdf correctamente
Lo que necesito es que se me abra el pdf al dar clic en el boton.

Despues de solucionar esto, lo que necesito imprimir es un listado de facturas que tengo en la BD

Este es el codigo queestoy probando:

    public function actionImprimepdf() {
    // get your HTML raw content without any layouts or scripts
    $content = 'Esto es el PDF';

    $pdf = new Pdf([
        'filename' => 'pdf/reporte.pdf',
        'mode' => Pdf::MODE_BLANK,
        'destination' => Pdf::DEST_DOWNLOAD,
        'content' => $content,

        // format content from your own css file if needed or use the
        // enhanced bootstrap css built by Krajee for mPDF formatting
        'cssFile' => '@vendor/kartik-v/yii2-mpdf/assets/kv-mpdf-bootstrap.min.css',
        // any css to be embedded if required
        'cssInline' => '.kv-heading-1{font-size:18px}',
        // set mPDF properties on the fly
        'options' => ['title' => 'Factura'],
        // call mPDF methods on the fly
        'methods' => [
            'SetHeader'=>['Krajee Report Header'],
            'SetFooter'=>['{PAGENO}'],
        ]
    ]);

    // return the pdf output as per the destination setting
    Yii::$app->response->format = \yii\web\Response::FORMAT_RAW;
    Yii::$app->response->headers->add('Content-Type', 'application/pdf');

    return $pdf->render();
}

(Jose 2rcv) #2

Esto es lo que me sale inicialmente

%PDF-1.4 %���� 3 0 obj <> /Contents 4 0 R>> endobj 4 0 obj <> stream x�u�MO!��̯x�z��.��jڮы�$LM�n��֤�a�Īax�y�gp�1�ih-�R�o�zѮ+����b�Q�yo��y�x]B���.�9�5�c]�����T��SN��K��iE5}�;�tOkޗ�[�-�b>�y�^x���(v�2��8 V��a��y���X�/8���K�_}�[�%a>�t;.��( W��B���x�jɀ��iZ���a …

Y vi que debajo me sale este error

    An Error occurred while handling another error:

yii\web\HeadersAlreadySentException: Headers already sent in D:\Programacion\Web\sisleg\vendor\mpdf\mpdf\src\Mpdf.php on line 9446. in D:\Programacion\Web\sisleg\vendor\yiisoft\yii2\web\Response.php:366
Stack trace:
#0 D:\Programacion\Web\sisleg\vendor\yiisoft\yii2\web\Response.php(339): yii\web\Response->sendHeaders()
#1 D:\Programacion\Web\sisleg\vendor\yiisoft\yii2\web\ErrorHandler.php(135): yii\web\Response->send()
#2 D:\Programacion\Web\sisleg\vendor\yiisoft\yii2\base\ErrorHandler.php(111): yii\web\ErrorHandler->renderException(Object(yii\web\HeadersAlreadySentException))
#3 [internal function]: yii\base\ErrorHandler->handleException(Object(yii\web\HeadersAlreadySentException))
#4 {main}
Previous exception:
yii\web\HeadersAlreadySentException: Headers already sent in D:\Programacion\Web\sisleg\vendor\mpdf\mpdf\src\Mpdf.php on line 9446. in D:\Programacion\Web\sisleg\vendor\yiisoft\yii2\web\Response.php:366
Stack trace:
#0 D:\Programacion\Web\sisleg\vendor\yiisoft\yii2\web\Response.php(339): yii\web\Response->sendHeaders()
#1 D:\Programacion\Web\sisleg\vendor\yiisoft\yii2\base\Application.php(392): yii\web\Response->send()
#2 D:\Programacion\Web\sisleg\frontend\web\index.php(17): yii\base\Application->run()
#3 {main}


(Jose 2rcv) #3

Ahora veo que este problema me lo da con un documento de hasta 77 paginas, si supera esta cantidad de paginas me muestra directamente el pdf pero con 0 paginas.
El documento tiene 256 paginas pero puede llagar hasta 300 o 350.

Existe algun limite para la generacion de paginas con mPdf ?