Table layout
mPDF will atempt to layout tables using the same algorithm recommended by the HTML specifications (see Auto-layout algorithm). However, the constraints of fitting content to the page size means that the recommended algorithm has to be altered.
In general, mPDF places more priority on producing a pleasing, efficiently laid out table than it does on respecting
defined values e.g. <table width="300px">
or <td width="30%">
If the result is not what you want, consider using some of the following to control the layout:
- change the maximum shrinkage factor allowed for an individual table e.g.
<table autosize="1.6">
- prevent an individual table from resizing e.g.
<table autosize="1">
- prevent all tables from resizing:
$mpdf->shrink_tables_to_fit = 1;
- non-breaking spaces
<td nowrap="nowrap">
<td style="white-space:nowrap">
<td style="width: 33%">
<td style="width: 5cm">
<table style="page-break-inside:avoid">
to force the table onto one page.<table style="overflow: visible|hidden|wrap">
to control wide tables or tables with specific widths specified
Overriding the Auto- Layout
Other methods to override the default layout algorithm.
$keep_table_proportions
If the table width is set greater than the page width allows, mPDF will by default ignore any defined sizes and attempt to auto-layout the table to the page width. This will result in relative column widths etc. being lost.
If you wish to maintain the relative proportions of the table, set $keep_table_proportions = true;
this forces the table to be resized, but keep relative proportions. NB It also
forces respect of cell widths set by %
$ignore_table_percents
Table and cell widths set as a percent value are respected when possible by mPDF - as long as the table layout meets the
other constraints. This can lead to an ugly or inefficiently laid out table for a printed document. Setting
$ignore_table_percents = true;
will force mPDF to
ignore any table or cell widths set as percent values.
$ignore_table_width
Table widths set as absolute length values are respected when possible by mPDF - as long as the table layout meets
the other constraints. This can lead to an ugly or inefficiently laid out table for a printed document. Setting
$ignore_table_width = true;
will force mPDF to ignore any table widths set as absolute length values.
$tableMinSizePriority
If there is a conflict between respecting $page-break-inside:avoid
and respecting
the maximum value allowed for $autosize, the configurable variable
tableMinSizePriority
will determine which factor takes priority. (mPDF vā„4.6)