Tips on Creating PDF using mPDF PHP library
In this post I will describe several ways to format HTML documents that will be converted into PDF file using mPDF PHP library.
1. Change Page Orientation
Use CSS3 page and sheet-size attribute to change page orientation.
<style type="text/css">
.landscape {
page: a4landscape;
}
.portrait {
page: a4portrait;
}
@page a4portrait {
sheet-size: A4;
}
@page a4landscape {
sheet-size: A4-L;
}
</style><div class="landscape"> Portrait page </div><div class="landscape"> Landscape page </div>
2. Change page margins
To change page margins, you need to give additional parameter to mPDF's constructors. The page margins are in milimeters. Note the example uses Yii pdf extension instead of calling mPDF directly.$mPDF1 = Yii::app()->ePdf->mpdf('', 'A4',0,'',5,5);
3. Fit a table into one page
To fit a table in entirety onto single page, we could use CSS attribute page-break-inside:avoid on the table.
<table style="page-break-inside: avoid;"> ... </table>
...
And you might want to enlarge the maximum shrink factor (the larger the value, the smaller we allow mPDF to shrink tables) :
$mPDF1->shrink_tables_to_fit = 10;
4. Fit contents of a div into one page
We might need to fit not only one table but one DIV containing many tables and other tags. The DIV should be only one DIV and directly under HTML BODY.
<body>
<div style="bottom: 0; left: 0; position: fixed; right: 0; top: 0;">
...
</div> </body>
<div style="bottom: 0; left: 0; position: fixed; right: 0; top: 0;">
...
</div> </body>
5. Change center to other tag with center class
The center tag is deprecated and not supported by mPDF library.
<center>
This is a title
</center>
should be changed onto
<div class="center">
This is another title</div>
<style type="text/css">
.center {
text-align: center;
}
</style>
6. Accelerate page rendering
Sometimes mPDF takes a long time to render pages because it iteratively tries to fit elements. So you might want to change this parameter to speed things up (the normal value is 10, meaning mPDF iterates in 1/10 increments):
$mPDF1->incrementFPR1 = 4;
Comments