TCPDF: HTML table and page breaks

后端 未结 8 1343
刺人心
刺人心 2021-01-31 04:04

I am creating a large HTML table and I have problem with page breaks as you can see in the following image:

Is there a method settle down the problem automatically? Or

8条回答
  •  闹比i
    闹比i (楼主)
    2021-01-31 04:34

    Some CSS solved for me:

    // Include the main TCPDF library (search for installation path).
    require_once('tcpdf/tcpdf.php');
    
    // create new PDF document
    $pdf = new TCPDF('R', PDF_UNIT, PDF_PAGE_FORMAT, true, 'UTF-8', false);
    
    // set document information
    $pdf->SetCreator(PDF_CREATOR);
    $pdf->SetAuthor('Author');
    $pdf->SetTitle('TCPDF HTML Table');
    $pdf->SetSubject('TCPDF Tutorial');
    $pdf->SetKeywords('TCPDF, PDF, html,table, example, test, guide');
    
    // set default header data
    $pdf->SetHeaderData('', '', ' HTML table', '');
    
    // set header and footer fonts
    $pdf->setHeaderFont(Array(PDF_FONT_NAME_MAIN, '', PDF_FONT_SIZE_MAIN));
    $pdf->setFooterFont(Array(PDF_FONT_NAME_DATA, '', PDF_FONT_SIZE_DATA));
    
    // set default monospaced font
    //$pdf->SetDefaultMonospacedFont(PDF_FONT_MONOSPACED);
    // set margins
    $pdf->SetMargins(15, 15, 15);
    $pdf->SetHeaderMargin(15);
    $pdf->SetFooterMargin(15);
    
    // set auto page breaks
    $pdf->SetAutoPageBreak(TRUE, 15);
    
    // set image scale factor
    //$pdf->setImageScale(PDF_IMAGE_SCALE_RATIO);
    // ---------------------------------------------------------
    // set font
    $pdf->SetFont('times', '', 10);
    
    // add a page
    $pdf->AddPage();
    
    $start = 1;
    $end = 254;
    $step = 1;
    
    $arr = range($start, $end, $step);
    
    
    $table_header .= sprintf("%s%s%s%s", 'IP', 'Computer', 'User', 'Fone');
    
    foreach ($arr as $ar) {
        $row[] = $ar;
    }
    foreach ($row as $r):
        if (($r % 40) === 0):
            $table_header;
        endif;
        $table .= sprintf("\n%s\n%s\n%s\n%s\n\n", $r, $r, $r, $r);
    endforeach;
    
    $now = date("d/m/Y");
    $caption = "IP addresses $now\n";
    $n = "\n";
    
    $tbl = <<
    table{
        font-family: serif;
        font-size: 11pt;
    }
    table tr {
    
    }
    table tr td {
        padding:3px;
        border:#000000 solid 1px;
    }
    em {
        font-size: 4pt;
    }
    tr { white-space:nowrap; }
    
    
            

    {$caption}

    {$table_begin} {$table_header} {$table} EOD; $pdf->writeHTML($tbl, true, false, false, false, ''); // reset pointer to the last page //$pdf->lastPage(); // --------------------------------------------------------- //Close and output PDF document $pdf->Output('html_table.pdf', 'I'); //============================================================+ // END OF FILE //============================================================+

提交回复
热议问题