如何使用mPDF和PHP防止PDF格式的表格大小调整?

时间:2014-10-03 12:59:35

标签: php html5 pdf-generation dynamic-programming

我有一些表单数据,提交后会生成PDF。问题是PDF格式的表格大小。如果我的表单中的某些字符串太长,则会错误地生成PDF。这是因为表格。它们具有静态大小,因此如果字符串太长,则表格不能容纳它。我使用mPDF库。

如何使这个表的大小动态变化,以便根据字符串的长度改变它们的大小?

如果字符串{p}最长,那么表格的宽度会减小。我想如果字符串{p}比表的宽度最长那么{p}应该在下一行写出并且表的高度应该增加。

如果字段(名称)中的字符串很短,则为屏幕截图:

short string {p}

如果字段(名称)中的字符串很长,则为屏幕截图:

long string {p}

字段(名称)中的字符串非常长的屏幕截图:

very_long string

以下是mPDF的代码片段:

$mpdf=new mPDF('UTF-8','A4','','',20,15,48,25,10,10);

$mpdf->shrink_tables_to_fit=1;
$mpdf->keep_table_proportions = true;
$mpdf->WriteHTML(generatePDF());
$mpdf->AddPage();
$mpdf->WriteHTML(generatePDF2());

$mpdf->Output();
exit;

HTML表格的片段:

function generatePDF(){
    global $a,$b,$c,$d;
    $html = getHTMLStyle().'

<div style="text-align: left;"><span style="font-size: 11pt;font-weight: bold;">FORMULARZ KONSULTACJI<br />PROJEKTU PRAWA MIEJSCOWEGO<br /> W ZAKRESIE DZIAŁALNOŚCI STATUTOWEJ ORGANIZACJI POZARZĄDOWEJ*<br /><br /></span></div>

<table class="items" width="100%" style="font-size: 9pt; border-collapse: collapse;" cellpadding="8">

<tr>
<td width="5%">A</td>
<td width="95%"><b>'.$a.'</b><br /><br /> '.$_POST['title'].'</td>
</tr>

4 个答案:

答案 0 :(得分:1)

下面:

<tr>
<td width="5%">A</td>
<td width="95%"><b>'.$a.'</b><br /><br /> '.$_POST['title'].'</td>
</tr>

尝试使用表格宽度的固定值而不是百分比。类似的东西:

<table class="items" width="950" style="font-size: 9pt; border-collapse: collapse;" cellpadding="8">

看看会发生什么。

答案 1 :(得分:0)

找到问题真的很难,但答案很简单。 在阅读源代码后,使用style =“overflow:wrap”的表:

elseif ($table['overflow']=='wrap')

答案 2 :(得分:0)

这是一个迟到的答案,但现在值得回答。当表tr具有非常大的内容时,我也遇到同样的问题。我尝试了下面的解决方案,但没有运气。

  

$ mpdf-&GT; shrink_tables_to_fit = 0;

然后我将我的html结构从表格改为div,繁荣它的工作。所以现在它工作得很好,并且大内容在页面之间正确吐出,而不会重叠页眉和页脚。我希望它能帮助别人。干杯

答案 3 :(得分:0)

<style>
    table {
        overflow: wrap;
    }
</style>