Yii 1.1: pdf

Small Yii extension, that wraps a few PHP libraries (mPDF and HTML2PDF) to convert HTML to PDF

Yii-PDF Extension

Small Yii extension, that wraps a few PHP libraries (mPDF and HTML2PDF so far) to convert HTML to PDF


  • Extension's GitHub repository
  • mPDF - is a PHP class to generate PDF files from HTML with Unicode/UTF-8 and CJK support
  • HTML2PDF - is a PHP class using FPDF for the PHP4 release, and TCPDF for the PHP5 release. It can convert valid HTML and xHTML to PDF


  • Yii 1.1.9 or above
  • mPDF version 5.3 (has been released 2011-07-21) or above
  • HTML2PDF version 4.03 (has been released 2011-05-27) or above

Official documentation and examples


  • Download and extract extension to the directory protected/extensions/yii-pdf
  • Download and extract library (mPDF and/or HTML2PDF) to own directory in catalog protected/vendors or set new value for 'librarySourcePath' parameter in 'params' array
  • Array 'defaultParams' - this is an array of constructor's default params of selected library. If you want to change default params - you can set them in config file (like shown below). If you do so - you must keep the order of array items!
  • In your protected/config/main.php, add the following:
    'ePdf' => array(
        'class'         => 'ext.yii-pdf.EYiiPdf',
        'params'        => array(
            'mpdf'     => array(
                'librarySourcePath' => 'application.vendors.mpdf.*',
                'constants'         => array(
                    '_MPDF_TEMP_PATH' => Yii::getPathOfAlias('application.runtime'),
                'class'=>'mpdf', // the literal class filename to be loaded from the vendors folder
                /*'defaultParams'     => array( // More info: http://mpdf1.com/manual/index.php?tid=184
                    'mode'              => '', //  This parameter specifies the mode of the new document.
                    'format'            => 'A4', // format A4, A5, ...
                    'default_font_size' => 0, // Sets the default document font size in points (pt)
                    'default_font'      => '', // Sets the default font-family for the new document.
                    'mgl'               => 15, // margin_left. Sets the page margins for the new document.
                    'mgr'               => 15, // margin_right
                    'mgt'               => 16, // margin_top
                    'mgb'               => 16, // margin_bottom
                    'mgh'               => 9, // margin_header
                    'mgf'               => 9, // margin_footer
                    'orientation'       => 'P', // landscape or portrait orientation
            'HTML2PDF' => array(
                'librarySourcePath' => 'application.vendors.html2pdf.*',
                'classFile'         => 'html2pdf.class.php', // For adding to Yii::$classMap
                /*'defaultParams'     => array( // More info: http://wiki.spipu.net/doku.php?id=html2pdf:en:v4:accueil
                    'orientation' => 'P', // landscape or portrait orientation
                    'format'      => 'A4', // format A4, A5, ...
                    'language'    => 'en', // language: fr, en, it ...
                    'unicode'     => true, // TRUE means clustering the input text IS unicode (default = true)
                    'encoding'    => 'UTF-8', // charset encoding; Default is UTF-8
                    'marges'      => array(5, 5, 5, 8), // margins by default, in order (left, top, right, bottom)


    public function actionIndex()
        # mPDF
        $mPDF1 = Yii::app()->ePdf->mpdf();
        # You can easily override default constructor's params
        $mPDF1 = Yii::app()->ePdf->mpdf('', 'A5');
        # render (full page)
        $mPDF1->WriteHTML($this->render('index', array(), true));
        # Load a stylesheet
        $stylesheet = file_get_contents(Yii::getPathOfAlias('webroot.css') . '/main.css');
        $mPDF1->WriteHTML($stylesheet, 1);
        # renderPartial (only 'view' of current controller)
        $mPDF1->WriteHTML($this->renderPartial('index', array(), true));
        # Renders image
        $mPDF1->WriteHTML(CHtml::image(Yii::getPathOfAlias('webroot.css') . '/bg.gif' ));
        # Outputs ready PDF
        # HTML2PDF has very similar syntax
        $html2pdf = Yii::app()->ePdf->HTML2PDF();
        $html2pdf->WriteHTML($this->renderPartial('index', array(), true));
        # Example from HTML2PDF wiki: Send PDF by email
        $content_PDF = $html2pdf->Output('', EYiiPdf::OUTPUT_TO_STRING);
        $mail = new PJmail();
        $mail->setAllFrom('webmaster@my_site.net', "My personal site");
        $mail->addsubject("Example sending PDF");
        $mail->text = "This is an example of sending a PDF file";
        $mail->addbinattachement("my_document.pdf", $content_PDF);
        $res = $mail->sendmail();


  • mPDF has GNU General Public License version 2
  • HTML2PDF has GNU Library or Lesser General Public License (LGPL)
  • This extension was released under the New BSD License

Change Log

  • Version 0.3.2 (2013-04-05)

    • func_get_args() is using through a variable now (for PHP < 5.3.0)
  • Version 0.3 (2012-07-07)

    • Fixed default constructor's params [thanks to zitter]
  • Version 0.2a (2012-02-05)

    • Fixed method name (mpdf - now it's lower-case) for some case-sensitive *nix OS filesystems (it may cause for some errors) [thanks to Hylke]
  • Version 0.2 (2012-01-24)

  • Version 0.2 (2012-01-18)
    • Parameter 'defaultParams' is not required anymore (will be used constructor's default params of selected library)
    • Added a few helper constants for Output() method (detailed info located in extension's class)
class EYiiPdf extends CApplicationComponent
    const OUTPUT_TO_BROWSER = "I";
    const OUTPUT_TO_DOWNLOAD = "D";
    const OUTPUT_TO_FILE = "F";
    const OUTPUT_TO_STRING = "S";
#Example (make sure that target directory is writable)
$html2pdf->Output('/path/to/file.pdf', EYiiPdf::OUTPUT_TO_FILE);
  • Version 0.1 (2012-01-16)
    • Initial release

Total 20 comments

#19427 report it
Rajith R at 2015/07/03 07:10am
$mPDF1->SetHtmlHeader("Your header text here");
$mPDF1->SetHtmlFooter(("Your footer text here");

This is not working in my app.

Used this instead in view/html page

    'Footer here'
For page number
General Example

this is working fine

#18786 report it
erand at 2015/01/07 04:29pm
Re: Some records are missing

I got it working...I was missing:


#18785 report it
erand at 2015/01/07 08:39am
Some records are missing

Hi, thank you for the great extension. I have a small problem: Not all records are shown...what could be the problem? For a table with 50 (more or less) records, everything is ok... But eg. for a table with 313 records, only 260 are shown...

#18655 report it
Fragoulas at 2014/12/08 03:30am

I am pretty sure you misplaced the component configuration in your config file.

#18515 report it
Sachy at 2014/11/08 06:05pm
Property "CWebUser.ePdf" is not defined.

I got the above error.. :(

#17981 report it
Yii3 at 2014/08/21 05:49am
list indent for texteditor list

hello yiiers,

To Add Header/Footer :

$mPDF1->SetHtmlHeader("Your header text here");
$mPDF1->SetHtmlFooter(("Your footer text here");

if someone has try to add texteditor text in pdf and list indent not working then i have found solution using str_replace,

$notes = str_replace('<ol style="margin-left: 40px;">', '<div style="margin-left: 40px;"><ol style="margin-left: 40px;">', $model->notes);
echo $notes = str_replace('</ol>',"</ol></div>",$notes);

Also one if you have got float:left issue then user mpdf not a HTMLtoPDF.

if you got solution do thumns up. Thanks.

#17745 report it
Yii3 at 2014/07/18 10:40am
Need to change mPDF download link

Need to change mPDF download link.

#16171 report it
Muhammad Shahzad at 2014/01/25 02:29pm
Include font issue

Hi,When I tried to generate pdf,I got this error!

TCPDF ERROR: Could not include font definition file: verdana

How I can fix this issue?

#15485 report it
Borales at 2013/11/14 05:32am

C.S.Putera, I think this is a mPDF (or HTML2PDF) problem, you should visit its official documentation site and check it there. My extension is just a "bridge" between Yii and vendor libs.

#15484 report it
C.S.Putera at 2013/11/14 05:20am
Content Moved To Next Page

Hello. I found that if there is my content ( say last section of the page ) which is long and got separated into the next page, then all the content above also moved to the next page, leaving the first page blank. Here is the link when the section content is short : OK

And if the section got long, it moved down. This is the screenshot : NOT OK

Here is my view : print.php

Do I do something wrong ? All I did is just adding the last content of that page with long lorem ipsum text and everything moved down to the next page. Please help, thank you so much

#15420 report it
Borales at 2013/11/08 04:06am
to C.S.Putera

C.S.Putera, lets try to do some trick.

Change this line:

$html2pdf->writeHTML($this->renderPartial('print', compact('model'),true));

To this:

$html2pdf->writeHTML('<table><tr>Hello World</tr></table>');

If it will be no error - then you have some layout confilcts (I suppose).

#15419 report it
C.S.Putera at 2013/11/08 04:05am
Double data shown ( solved )


Hello. Found the reason why it shows double. This was my view :

            Hello world

I did not use td inside the table. After I added the td then it works perfect. Thank you so much for the extension and the support. Cheers!

#15418 report it
C.S.Putera at 2013/11/08 03:54am
Double data shown

Yes, this is my full controller action code :

public function actionPrint($id) {
    $model = $this->loadModel($id);
    $html2pdf = Yii::app()->ePdf->HTML2PDF();
        $html2pdf->writeHTML($this->renderPartial('print', compact('model'),true));

Thank you

#15417 report it
Borales at 2013/11/08 03:51am
to C.S.Putera

C.S.Putera, can you show your complete controller-action code?

Seems that you are the only with such problem.. I can't reproduce it.

#15416 report it
C.S.Putera at 2013/11/08 03:34am
Double data shown

Thank you for the fast response. Yes, I have tried to set the third param to true and still shown double. What I mean by double is that, the pdf shown contain : "Hello WorldHello World" instead of "HelloWorld" only

#15414 report it
Borales at 2013/11/08 03:23am
to C.S.Putera
$html2pdf->writeHTML($this->renderPartial('print', compact('model'), false));

C.S.Putera, do you have a reason for using the third param as false in above code?

Try to change line in your code to this:

$html2pdf->writeHTML($this->renderPartial('print', compact('model'), true));

It will return output text to writeHTML method. And your problem should be gone.

#15412 report it
C.S.Putera at 2013/11/08 03:08am
Double data shown

Hello. Thank you for the extension. But when I tried to display the content, it displays twice. Here is my code :


$model = $this->loadModel($id);
$html2pdf = Yii::app()->ePdf->HTML2PDF();
$html2pdf->writeHTML($this->renderPartial('print', compact('model'),false));


        Hello World

Please help, thank you.

#14482 report it
Borales at 2013/08/15 08:14pm
to nkdos

Do you call it with Yii::app()->pdf or Yii::app()->ePdf?

#14481 report it
nkdos at 2013/08/15 08:07pm
Pdf is not defined

I am a fool, I was wrong data defining

_when I add main.php configuration, I get the error "Pdf is not defined"

I add yii-pdf





and I have:

'ePdf' => array(
        'class'         => 'ext.yii-pdf.EYiiPdf',

which can be the error?_

#14126 report it
sazedul at 2013/07/21 05:15pm

Nice and easy to install.Thanks a lot Brother for this extension.

Leave a comment

Please to leave your comment.

Create extension