У меня есть данные формы, и после отправки создается PDF-файл. Проблема заключается в размере таблиц в формате PDF. Если некоторая строка в моей форме слишком длинная, PDF создается неправильно. Это потому, что таблицы. Они имеют статический размер, поэтому, если строка слишком длинная, таблица не вмещает ее. Я использую библиотеку mPDF.
Как я могу сделать эту динамику размеров таблиц так, чтобы их размер изменился в зависимости от длины строки?
Если строка {p} длиннее, то ширина таблицы уменьшает размер таблицы. Я хочу, если строка {p} длиннее ширины таблицы, тогда {p} должна записываться в следующей строке, а высота таблицы должна увеличиваться.
Снимок экрана, если строка в поле (имя) короткая:
Снимок экрана, если строка в поле (имя) длинна:
Снимок экрана, если строка в поле (имя) очень длинная:
Вот фрагмент кода с 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>
Вот:
<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">
И посмотрим, что произойдет.
Это поздний ответ, но сейчас стоит ответить. Я тоже столкнулся с такой же проблемой, когда таблица tr имеет очень большой контент. Я попробовал решение ниже, но не повезло.
$ Mpdf-> shrink_tables_to_fit = 0;
Затем я изменил свою структуру html из таблицы в div, бум сработал. Итак, теперь он работает отлично, и большой контент правильно расплескивается между страницами, не перекрывая верхний и нижний колонтитулы. Надеюсь, это поможет кому-то. ура
Это очень сложно найти, но ответ прост. table with style = "overflow: wrap" после прочтения исходного кода:
elseif ($table['overflow']=='wrap')