PHP TCPDF打印表无法正常工作

时间:2016-03-30 09:47:03

标签: php html tcpdf

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

这是表table code的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')
    ?>

但只有第二张表正在打印;

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

2 个答案:

答案 0 :(得分:2)

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

解决问题改变了行

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

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

它工作!!!!

答案 1 :(得分:0)

你在最后一行丢失了一个分号。

更改

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

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

最后,HEREDOC的终止端不应有任何保证金

EOD;

请参阅PHP: The right way

上的HEREDOC部分