[英]mpdf: How to generate a pdf file with mpdf which contain huge pages
我正在尝试使用mpdf生成pdf文件。 它包含超过50000页。 问题是浏览器可以处理和显示pdf文件,当它有2000页时,但是当我尝试生成更多文件时,浏览器没有响应,最后,它显示了max_execution_time错误,尽管我将max_execution_time增加了30到300形式的php。 ini文件。
这是我的mpdf代码...
<?php
// header('Content-type: application/force-download');
// header("Content-type:application/pdf");
ini_set("memory_limit","128M");
ob_start();
include("fpdf/mpdf/mpdf.php");
// $mpdf=new mPDF('mm','array(140,215)',14,'nikosh');
$mpdf = new mPDF('0',array(280,216),12,'nikosh',3,3,'L');
$mpdf->SetTopMargin(0);
$mpdf->SetRightMargin(0);
$mpdf->useSubstitutions = false;
$mpdf->simpleTables = true;
$stylesheet = file_get_contents('style.css');
$html='
<div style="display:inline-table">
<div style="float:right;width:48.5%;">
<p style="margin-left:55mm;margin-bottom:0mm;padding-bottom:0mm;font-size:8mm;float:left;"> যশোর <span class="hide">পৌরসভা </span> </p>
<div style="margin-left:48mm;margin-top:0mm;padding-top :0mm;"><span style="width:20mm;">পৌরকরের বিল</span> <span style="margin-left:50mm;margin-bottom:-10mm;font-size:4mm"> অর্থ বছরঃ </span></div>
<div style="margin-left:48mm;margin-top:0mm;padding-top :0mm;"><span style="width:20mm;color:red;">পৌরসভার কপি </span> <span style="margin-left:50mm;margin-bottom:-10mm;font-size:4mm"> কিস্তিঃ </span></div>
<div class="all_o_i">
<p class="o_in">হোল্ডিং নং : ৩৮৯৪-৩৪৩ </p>
<p class="o_in">কর দাতার আই ডি : </p>
<p class="o_in">করদাতার নাম : </p>
<p class="o_in">রাস্তা/মৌজা/এলাকা/মহল্লা : </p>
<p class="o_in">বিলের ঠিকানা : </p>
<p class="o_in">বিল ইস্যুর তারিখ : </p>
<p class="o_in" style="color:red">জমাদানের শেষ তারিখ : </p>
</div>
</div>
<div style="float:left;width:48.5%;">
<p style="margin-left:55mm;margin-bottom:0mm;padding-bottom:0mm;font-size:8mm;float:left;"> পৌরসভা </p>
<div style="margin-left:48mm;margin-top:0mm;padding-top :0mm;"><span style="width:20mm;">পৌরকরের বিল</span> <span style="margin-left:50mm;margin-bottom:-10mm;font-size:4mm"> অর্থ বছরঃ </span></div>
<div style="margin-left:48mm;margin-top:0mm;padding-top :0mm;"><span style="width:20mm;color:red;">পৌরসভার কপি </span> <span style="margin-left:50mm;margin-bottom:-10mm;font-size:4mm"> কিস্তিঃ </span></div>
<div class="all_o_i" style="">
<p class="o_in">হোল্ডিং নং : </p>
<p class="o_in">কর দাতার আই ডি : </p>
<p class="o_in">করদাতার নাম : </p>
<p class="o_in">রাস্তা/মৌজা/এলাকা/মহল্লা : </p>
<p class="o_in">বিলের ঠিকানা : </p>
<p class="o_in">বিল ইস্যুর তারিখ : </p>
<p class="o_in" style="color:red">জমাদানের শেষ তারিখ : </p>
</div>
</div>
</div>
<div class="tax_secion1">
<table class="tax_table">
<tr>
<td rowspan="2">করের বিবরন</td>
<td colspan="1">বকেয়া </td>
<td colspan="5">চলতি</td>
</tr>
<tr>
<td style="line-height: 85%;"> <span style="float:right">অর্থ </span><br />বছরে কিস্তি থেকে </td>
<td>১ম কিস্তি </td>
<td>২য় কিস্তি </td>
<td>৩য় কিস্তি </td>
<td>৪র্থ কিস্তি </td>
<td>মোট </td>
</tr>
<tr>
<td>-</td>
<td>-</td>
<td>- </td>
<td>-</td>
<td>-</td>
<td>-</td>
<td>-</td>
</tr>
<tr>
<td>-</td>
<td>-</td>
<td>-</td>
<td>-</td>
<td>-</td>
<td>-</td>
<td>-</td>
</tr>
<tr>
<tr>
<td>-</td>
<td>-</td>
<td>-</td>
<td>-</td>
<td>-</td>
<td>-</td>
<td>-</td>
</tr>
<tr>
<td>-</td>
<td>-</td>
<td>-</td>
<td>-</td>
<td>-</td>
<td>-</td>
<td>-</td>
</tr>
<tr>
<td>-</td>
<td>-</td>
<td>-</td>
<td>-</td>
<td>-</td>
<td>-</td>
<td>-</td>
</tr>
<tr>
<td>-</td>
<td>-</td>
<td>-</td>
<td>-</td>
<td>-</td>
<td>-</td>
<td>-</td>
</tr>
</table>
</div>
<div class="tax_secion2">
<table class="tax_table">
<tr>
<td rowspan="2">করের বিবরন</td>
<td colspan="1">বকেয়া </td>
<td colspan="5">চলতি</td>
</tr>
<tr>
<td style="line-height: 85%;"> <span style="float:right">অর্থ </span><br />বছরে কিস্তি থেকে </td>
<td>১ম কিস্তি </td>
<td>২য় কিস্তি </td>
<td>৩য় কিস্তি </td>
<td>৪র্থ কিস্তি </td>
<td>মোট </td>
</tr>
<tr>
<td>-</td>
<td>-</td>
<td>- </td>
<td>-</td>
<td>-</td>
<td>-</td>
<td>-</td>
</tr>
<tr>
<td>-</td>
<td>-</td>
<td>-</td>
<td>-</td>
<td>-</td>
<td>-</td>
<td>-</td>
</tr>
<tr>
<tr>
<td>-</td>
<td>-</td>
<td>-</td>
<td>-</td>
<td>-</td>
<td>-</td>
<td>-</td>
</tr>
<tr>
<td>-</td>
<td>-</td>
<td>-</td>
<td>-</td>
<td>-</td>
<td>-</td>
<td>-</td>
</tr>
<tr>
<td>-</td>
<td>-</td>
<td>-</td>
<td>-</td>
<td>-</td>
<td>-</td>
<td>-</td>
</tr>
<tr>
<td>-</td>
<td>-</td>
<td>-</td>
<td>-</td>
<td>-</td>
<td>-</td>
<td>-</td>
</tr>
</table>
</div>
<div class="tax_secion1">
<table class="tax_table">
<tr>
<td>করের বিবরন <br /> করের বিবরন <br /> </td>
<td>কেবল বকেয়া </td>
<td>বকেয়া ও ১ম কিস্তি একত্রে </td>
<td>বকেয়া ও (১ম-২য়)কিস্তি একত্রে </td>
<td>বকেয়া ও (১ম-৩য়) কিস্তি একত্রে </td>
<td>বকেয়া ও (১ম-৪র্থ) কিস্তি একত্রে </td>
</tr>
<tr>
<td>-</td>
<td>-</td>
<td>- </td>
<td>-</td>
<td>-</td>
<td>-</td>
</tr>
<tr>
<td>-</td>
<td>-</td>
<td>-</td>
<td>-</td>
<td>-</td>
<td>-</td>
</tr>
<tr>
<tr>
<td>-</td>
<td>-</td>
<td>-</td>
<td>-</td>
<td>-</td>
<td>-</td>
</tr>
<tr>
<td>-</td>
<td>-</td>
<td>-</td>
<td>-</td>
<td>-</td>
<td>-</td>
</tr>
<tr>
<td>-</td>
<td>-</td>
<td>-</td>
<td>-</td>
<td>-</td>
<td>-</td>
</tr>
<tr>
<td>-</td>
<td>-</td>
<td>-</td>
<td>-</td>
<td>-</td>
<td>-</td>
</tr>
</table>
</div>
<div class="tax_secion2">
<table class="tax_table">
<tr>
<td>করের বিবরন <br /> করের বিবরন <br /> </td>
<td>কেবল বকেয়া </td>
<td>বকেয়া ও ১ম কিস্তি একত্রে </td>
<td>বকেয়া ও (১ম-২য়)কিস্তি একত্রে </td>
<td>বকেয়া ও (১ম-৩য়) কিস্তি একত্রে </td>
<td>বকেয়া ও (১ম-৪র্থ) কিস্তি একত্রে </td>
</tr>
<tr>
<td>-</td>
<td>-</td>
<td>- </td>
<td>-</td>
<td>-</td>
<td>-</td>
</tr>
<tr>
<td>-</td>
<td>-</td>
<td>-</td>
<td>-</td>
<td>-</td>
<td>-</td>
</tr>
<tr>
<tr>
<td>-</td>
<td>-</td>
<td>-</td>
<td>-</td>
<td>-</td>
<td>-</td>
</tr>
<tr>
<td>-</td>
<td>-</td>
<td>-</td>
<td>-</td>
<td>-</td>
<td>-</td>
</tr>
<tr>
<td>-</td>
<td>-</td>
<td>-</td>
<td>-</td>
<td>-</td>
<td>-</td>
</tr>
<tr>
<td>-</td>
<td>-</td>
<td>-</td>
<td>-</td>
<td>-</td>
<td>-</td>
</tr>
</table>
</div>
';
// $html = '<h1>This is test papers</h1>';
$x = 1;
while($x <= 1000) {
$mpdf->AddPage();
$mpdf->WriteHTML($stylesheet,1);
$mpdf->WriteHTML($html,2);
$x++;
}
ob_end_clean();
$mpdf->Output('test.pdf',I);
exit;
?>
您有两种选择:
max_execution_time
情况下在后台生成PDF 处理这种规模的东西时,无论如何都应该这样做。 使用cli
脚本生成PDF,cli php.ini
通常没有设置max_execution_time
。 将您的PDF保存在磁盘上,以进一步利用(发送,共享,链接下载)。
浏览器并非要显示此类数据,请使用适当的桌面PDF查看器以获得更好的性能。
生成此大小的PDF时,您很可能会遇到内存限制问题,为此,还有第二种选择:
将您的HTML拆分为最多一百页的块,使用cli
生成单独的文档(每个文档都运行一个新的干净脚本),然后使用外部程序将生成的PDF文档连接起来。 GhostScript:
gs -dBATCH -dNOPAUSE -q -sDEVICE=pdfwrite -sOutputFile=out.pdf in1.pdf in2.pdf
或pdftk:
pdftk in1.pdf in2.pdf cat output out.pdf
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.