PHP TCPDF 打印 table 不工作

PHP TCPDF print table not working

我会尝试在 pdf 上打印动态生成的 html table,因为我尝试将 table html 代码复制到 PHP 文件中并使用 tcpdf 示例将其打印在 pdf 上,但这不起作用。

这是 html table table code 代码的 link。

这是 PHP 代码:

    <?php

    // Include the main TCPDF library (search for installation path).
    require_once('tcpdf.php');

    // create new PDF document
    $pdf = new TCPDF(PDF_PAGE_ORIENTATION, PDF_UNIT, PDF_PAGE_FORMAT, true, 'UTF-8', false);

    // set document information
    $pdf->SetCreator(PDF_CREATOR);
    $pdf->SetAuthor('Nicola Asuni');
    $pdf->SetTitle('TCPDF Example 048');
    $pdf->SetSubject('TCPDF Tutorial');
    $pdf->SetKeywords('TCPDF, PDF, example, test, guide');

    // set default header data
    $pdf->SetHeaderData(PDF_HEADER_LOGO, PDF_HEADER_LOGO_WIDTH, PDF_HEADER_TITLE.' 048', PDF_HEADER_STRING);

    // 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(PDF_MARGIN_LEFT, PDF_MARGIN_TOP, PDF_MARGIN_RIGHT);
    $pdf->SetHeaderMargin(PDF_MARGIN_HEADER);
    $pdf->SetFooterMargin(PDF_MARGIN_FOOTER);

    // set auto page breaks
    $pdf->SetAutoPageBreak(TRUE, PDF_MARGIN_BOTTOM);

    // set image scale factor
    $pdf->setImageScale(PDF_IMAGE_SCALE_RATIO);


    // set font
    $pdf->SetFont('helvetica', 'B', 20);

    // add a page
    $pdf->AddPage();

    $pdf->Write(0, 'Example of HTML tables', '', 0, 'L', true, 0, false, false, 0);

    $pdf->SetFont('helvetica', '', 8);

    // -----------------------------------------------------------------------------
    $tbl =<<<EOD
    <table border="1">
        <tr>
            <td width="100%" colspan="4" class="verde">B. Impianti di generazione di energia
                (termica, elettrica, cogenerazione, ...)<br> Aggiungere nuove
                colonne in caso l\'impianto sia dotato di più di 4 generatori.
            </td>
        </tr>
        <tr>
            <td colspan="2">numero di generatori</td>
            <td class="grassetto"> Generatore 12</td>
            <td></td>
        </tr>
        <tr>
            <td class="capolinea">B0.</td>
            <td class="grassetto">Funzione</td>
            <td class="giallo">termico</td>
            <td>&nbsp;</td>
        </tr>
        <tr>
            <td class="capolinea">B1.</td>
            <td class="grassetto">Potenza termica nominale</td>
            <td class="giallo">23</td>
            <td class="corsivo">Indicare la potenza termica nominale di ogni generatore [kW]</td>
        </tr>
        <tr>
            <td class="capolinea">B2.</td>
            <td class="grassetto">Potenza elettrica nominale</td>
            <td class="giallo">23</td>
            <td class="corsivo">Indicare la potenza elettrica nominale di ogni generatore [kW]</td>
        </tr>
        <tr>
            <td class="capolinea">B3.</td>
            <td class="grassetto">Fonti energetiche utilizzate</td>
            <td class="giallo"><ul class="allsin"><li>pellet di legno;</li></ul></td>
            <td class="corsivo">Indicare per ogni unità di generazione la/le fonte/fonti utilizzata/e per produzione di energia termica,
                rinnovabile o non rinnovabile (in caso di recuperi da processi
                industriali, specificare la fonte utilizzata nel processo).
            </td>
        </tr>
        <tr>
            <td class="capolinea" rowspan="2">B4.</td>
            <td class="grassetto" rowspan="2">Rendimento di conversione medio
                dell\'impianto</td>
            <td class="giallo">23</td>
            <td rowspan="2">specificare se: dichiarato dal costruttore o dato medio ricavato in esercizio</td>
        </tr>
        <tr>
            <td class="giallo">Costruttore</td>
        </tr>
        <tr>
            <td class="capolinea" rowspan="2">B5.</td>
            <td class="grassetto" rowspan="2">Rendiemnto di conversione medio
                dell\'impianto che produce elettricità</td>
            <td class="giallo">23</td>      
            <td rowspan="2">specificare se: dichiarato dal costruttore o dato medio ricavato
                in esercizio</td>
        </tr>
        <tr>
            <td class="giallo">Costruttore</td>     
        </tr>
        <tr>
            <td class="capolinea">B6.</td>
            <td class="grassetto">Sigla generatore</td>
            <td class="giallo">23</td>      <td class="corsivo">La sigla del generatore riportata
                nell\'autorizzazione alle emissioni in atmosfera (rilasciata dalla
                Provincia ai sensi del DPR n. 203 del 1988 o del D.Lgs. n. 152 del
                2006), <b>se l\'impianto prevede il rilascio di tale autorizzazione</b>
            </td>
        </tr>
    <tr>
        <td class="capolinea">B7.</td>
        <td class="grassetto">Ore di funzionamento annue</td>
        <td class="giallo">23</td>      <td>&nbsp;</td>
    </tr>

    <tr class="piccolo medio">
        <td class="capolinea">B8.</td>
        <td class="grassetto">Inquinante; emissione; unità di misura</td>
        <td class="giallo"><ul class="allsin"></ul></td>
        <td class="corsivo"><b>ogni impianto soggetto ad autorizzazione alle
                emissioni</b> deve fare o un autonomo controllo 1 volta l\'anno (si
            tratta di certificati analitici: si prega di inviare tali relazioni
            in allegato alla presente tabella) o misure in continuo (in questo
            caso indicare l\'inquinante, le emissioni corrispondenti e l\'unità di
            misura in una singola cella separandoli con un punto e virgola).
            Inserire righe aggiuntive se necessario</td>
    </tr>
    <tr class="piccolo medio">
        <td class="capolinea">B9.</td>
        <td class="grassetto">Sistema di abbattimento degli inquinanti</td>
        <td class="giallo">abbattimento2</td>
        <td class="corsivo">Indicare i sistemi di abbattimento degli
            inquinanti installati, inserendo lo stesso se più
            generatori fanno riferimento ad un unico camino e ad un\'unica linea
            fumi</td>
    </tr>
</table>
EOD;

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

    // -----------------------------------------------------------------------------

    $tbl = <<<EOD
    <table cellspacing="0" cellpadding="1" border="1">
        <tr>
            <td rowspan="3">COL 1 - ROW 1<br />COLSPAN 3<br />text line<br />text line<br />text line<br />text line<br />text line<br />text line</td>
            <td>COL 2 - ROW 1</td>
            <td>COL 3 - ROW 1</td>
        </tr>
        <tr>
            <td colspan="2">COL 2 - ROW 2 - COLSPAN 2<br />text line<br />text 
            line<br />text 
            line<br />text line</td>
             <td>COL 3 - ROW 2</td>
        </tr>
        <tr>
           <td>COL 3 - ROW 3</td>
        </tr>

    </table>
    EOD;

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

    // -----------------------------------------------------------------------------

    //Close and output PDF document
    $pdf->Output('example_print.pdf', 'I')
    ?>

但只有第二个 table 正在打印;

如有任何帮助或建议,我们将不胜感激...

你最后一行少了一个分号。

改变

 $pdf->Output('example_print.pdf', 'I')

$pdf->Output('example_print.pdf', 'I');

最后,HEREDOC 的终止端不应有空白

EOD;

参见 PHP: The right way

上的 HEREDOC 部分

经过长时间的测试,我发现了问题...是UTF-8中带有重音符号的字母,例如'à'或'ù'

解决问题换行

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

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

而且有效!!!