PHP TCPDF打印表不工作


PHP TCPDF print table not working

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

这是表表代码的html代码的链接。

这是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')
    ?>

但只有第二张表在打印;

任何帮助或建议都将不胜感激。。。

经过长时间的测试,我发现了问题。。。UTF-8 中重音为"à"或"ú"的字母吗

为了解决这个问题,改变线路

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

在中

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

它起作用了!!!!

最后一行缺少分号。

更改

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

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

最后,HEREDOC 的终止端不应有任何余量

EOD;

请参阅关于PHP的HEREDOC部分:正确的