TCPDF: как рассчитать и разместить правильный блок на одной странице, а затем начать с таблицы - PullRequest
4 голосов
/ 18 июня 2020

Я использую tcpdf впервые, и с помощью их документации я могу создавать контент с помощью table. Я не могу показать вам дизайн, но попытаюсь объяснить.

левая сторона - это одно изображение, а правая - одно изображение, а в середине будут видны всего 4 содержимого. иногда из этих 4 элементов 1 может отсутствовать. Это динамический c и может быть от 1 до 100 до 200 блоков.

Я создал <table> с одним <tr> и тремя <td>, и это для l oop. Проблема заключается в том, что последний контент на первой странице не работает, и продолжить на второй, которая не работает. Я хочу, чтобы любое количество блоков подходило к первой странице, должно быть на первой странице, а затем создавать другую страницу и продолжать печатать блоки на них и так далее.

Вот мой код

$A4Ht = 210; //210 mm A4 page width 
$A4Ht = 297; //297 mm A4 page height

$margin = 15;//margin from all side before pdf starts 
$x1 = 15; //pdf starts from this x point
$x2 = 160; // event map starts from this x point
$pdfWidth = 200;

$this->load->library("tcpdf/tcpdf");
$pdf = new Tcpdf('P', 'mm', 'A4', true, 'UTF-8', false);

$pdf->setPrintHeader(false);
$pdf->setPrintFooter(false);
$pdf->SetMargins($margin, $margin, $margin,true);       // LEFT, TOP, RIGHT, BOTTOM
$pdf->setPageOrientation("P",true,$margin);

$pdf->SetTitle("Title");
$pdf->SetAuthor("Author");
$pdf->AddPage('P', 'A4');
$pdf->setPage(1, true);
$pdf->Image("logo.png",$x1,5,60,10.412,"png",'','',true,320);

$tbl = '<table style="background-color:#eee;"><tr><td width="4%"></td><td width="90%"><table><tr style="line-height:20px;"><td></td></tr></table><table cellspacing="0" cellpadding="1" style="margin-top:25px;">';
for($p=0;$p<$Count;$p++){
    $image1 = "123.jpg";
    $image2 = "456.jpg";

    $title1 = "dynamic";
    $title2 = "dynamic";
    $title3 = "dynamic";
    $title4 = "dynamic";

        $addTitle1 = '<table cellpadding="2"><tr><td valign="top" width="5%"></td><td width="90%">'.$title1.'</td></tr></table>';
        $addTitle2 = '<table cellpadding="2"><tr><td valign="top" width="5%"></td><td width="90%">'.$title2.'</td></tr></table>';
        $addTitle3 = '<table cellpadding="2"><tr><td valign="top" width="5%"></td><td width="90%">'.$title3.'</td></tr></table>';
    $addTitle4 = '<table cellpadding="2"><tr><td valign="top" width="5%"></td><td valign="top" width="8%"><img width="100" src="'.$pathWeb.'/icon.png" /></td ><td valign="middle" width="82%">&nbsp;'.$title4.'</td></tr></table>';        
    $tbl.='<tr>
                <td width="25%"><img src="'.$image1.'" width="140" height="105"></td>
                <td width="46%">
                        <tr><td style="font-family:AvenirNext-Bold;color:#000;font-size:14px;line-height:15px;">'.$addTitle1.'</td></tr>
                        <tr><td style="font-family:AvenirNext-Bold;color:#0096ff;font-size:10px;">'.$addTitle2.'</td></tr>
                        <tr><td style="font-family:AvenirNext-DemiBold;color:#000;font-size:6px;">'.$addTitle3.'</td></tr>
                        <tr><td style="font-family:AvenirNext-DemiBold;color:#000;font-size:9px;">'.$addTitle4.'</td></tr>
                </td>
                <td width="29%"><img src="'.$image2.'" width="160" height="100"></td>
        </tr>';
}
$tbl.='</table><table><tr style="line-height:20px;"><td></td></tr></table></td><td width="4%"></td></tr></table>';

$tbl=utf8_encode($tbl);
$pdf->writeHTML($tbl, true, false, false, false, '');

Я не могу разорвать страницу и продолжить на второй странице. некоторые блоки наполовину занимают первое место, а остальные - второе. несколько блоков занимают 95% на первой странице, а остальные - на второй. как мне go опередить это

...