MPDF 上的大型数据表 - 我可以避免调整大小吗?
Large data tables on MPDF - Can i avoid resize?
我正在我的管理员上生成一些报告,我正在使用 MPDF library 导出为 PDF。但是当它有非常大的数据量时,MPDF 正在调整 table 的大小以适应页面,所以它变得很笨拙。
有什么办法可以防止这种情况发生吗?我用来生成的代码如下。我尝试将 "shrink_tables_to_fit" 设置为 0 和 1,但均未成功。还尝试将 autosize=1 设置为每个 table.
$stylesheet = file_get_contents($_SERVER['DOCUMENT_ROOT'].'/site/css/layout/pdf.css');
$bootstrap = file_get_contents('https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css');
$mpdf = new mPDF('pt', 'a4');
$mpdf->shrink_tables_to_fit = 1;
$mpdf->setAutoTopMargin = 'stretch';
$mpdf->setAutoBottomMargin = 'stretch';
$mpdf->SetHTMLHeader('<img src="'.$_SERVER['DOCUMENT_ROOT'].'/site/img/content/pdf/header.jpg">');
$mpdf->SetFooter('{DATE j/m/Y H:i}|{PAGENO}/{nb}');
$mpdf->WriteHTML($bootstrap, 1);
$mpdf->WriteHTML($stylesheet, 1);
$mpdf->WriteHTML($html);
$mpdf->Output($_SERVER['DOCUMENT_ROOT'].'/upload/consultas-pre/'.$nomeArquivo.'.pdf', 'F');
在 table 开始标记中试试这个:
<table autosize="1">
您可以将整个 table 拆分为不同的 table,并在每个 table 的末尾添加:
<div style="page-break-after: always;"> </div>
这将创建分页符。
示例:
<?php $rows=1; foreach($allData as $data){ ?>
<table>
<tr>
<td>Your table data</td>
</tr>
</table>
<?php if($row == 10) { ?>
<div style="page-break-after: always;"> </div>
<?php } ?>
<?php } ?>
您可以阅读有关 mpdf 分页符的更多信息here
我找到了。
我不能在里面放一个 table 和其他 table。发生这种情况时,MPDF 会在调整大小时丢失。
我遇到了同样的问题。尝试了我在 Whosebug 上以不同组合找到的所有内容:shrink_tables_to_fit
、autosize="0"
、page-break-inside:...
、overflow:...
等...
在我的例子中,我的 table 位于 div
内,其内联样式具有 position:absolute
。在我将其更改为相对或完全删除位置后,table 在页面之间正确划分。
我正在我的管理员上生成一些报告,我正在使用 MPDF library 导出为 PDF。但是当它有非常大的数据量时,MPDF 正在调整 table 的大小以适应页面,所以它变得很笨拙。
有什么办法可以防止这种情况发生吗?我用来生成的代码如下。我尝试将 "shrink_tables_to_fit" 设置为 0 和 1,但均未成功。还尝试将 autosize=1 设置为每个 table.
$stylesheet = file_get_contents($_SERVER['DOCUMENT_ROOT'].'/site/css/layout/pdf.css');
$bootstrap = file_get_contents('https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css');
$mpdf = new mPDF('pt', 'a4');
$mpdf->shrink_tables_to_fit = 1;
$mpdf->setAutoTopMargin = 'stretch';
$mpdf->setAutoBottomMargin = 'stretch';
$mpdf->SetHTMLHeader('<img src="'.$_SERVER['DOCUMENT_ROOT'].'/site/img/content/pdf/header.jpg">');
$mpdf->SetFooter('{DATE j/m/Y H:i}|{PAGENO}/{nb}');
$mpdf->WriteHTML($bootstrap, 1);
$mpdf->WriteHTML($stylesheet, 1);
$mpdf->WriteHTML($html);
$mpdf->Output($_SERVER['DOCUMENT_ROOT'].'/upload/consultas-pre/'.$nomeArquivo.'.pdf', 'F');
在 table 开始标记中试试这个:
<table autosize="1">
您可以将整个 table 拆分为不同的 table,并在每个 table 的末尾添加:
<div style="page-break-after: always;"> </div>
这将创建分页符。
示例:
<?php $rows=1; foreach($allData as $data){ ?>
<table>
<tr>
<td>Your table data</td>
</tr>
</table>
<?php if($row == 10) { ?>
<div style="page-break-after: always;"> </div>
<?php } ?>
<?php } ?>
您可以阅读有关 mpdf 分页符的更多信息here
我找到了。
我不能在里面放一个 table 和其他 table。发生这种情况时,MPDF 会在调整大小时丢失。
我遇到了同样的问题。尝试了我在 Whosebug 上以不同组合找到的所有内容:shrink_tables_to_fit
、autosize="0"
、page-break-inside:...
、overflow:...
等...
在我的例子中,我的 table 位于 div
内,其内联样式具有 position:absolute
。在我将其更改为相对或完全删除位置后,table 在页面之间正确划分。