2016-03-30 3 views
1

Я бы попытался напечатать динамически сгенерированную таблицу html в pdf, чтобы попытаться скопировать html-код таблицы в файл PHP и использовать пример tcpdf для печати в pdf, но это не работает.PHP TCPDF print table not working

Это ссылка html-кода таблицы table code.

Это 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') 
    ?> 

но только второй стол печати;

Любая помощь или советы будут оценены ...

+0

Ваша последняя строка не завершена $ pdf-> Вывод ('example_print.pdf', 'I'); , отсутствует полуколока – ArrowHead

+0

полукольцо не решает проблему .... – Ossarotte

+0

Я удалил ваше решение из вопроса. Вы должны добавить его в качестве ответа, а затем вы можете отметить его как принятый ответ. Ниже кнопок голосования у вас есть отметка, которую вы можете нажать. Это расскажет всем, что вопрос решен, и вы сами это поняли. –

ответ

2

После долгого теста я нашел проблему ... есть буквы с акцентами, как «A» или «U» в UTF-8

для решения проблемы изменения линии

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

в

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

и это произведение !!!!

0

Вы пропускаете точку с запятой на последней строке.

Изменить

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

в

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

Наконец, не должно быть маржу с завершающего конца Heredoc

EOD; 

Смотрите раздел Heredoc на PHP: The right way

+0

Точка с запятой не решает проблему, потому что последняя строка и не является правильной ошибкой, но если это правильно, не меняйте ситуацию ... маржа HEREDOC - это только ошибка вырезания и вставки в исходном файле, нет поля. – Ossarotte

+0

Ну, я сделал эти изменения на своей локальной машине, и это работает. Вы уверены, что ваш оператор include require_once ('tcpdf.php'); верно ? Является ли файл tcpdf.php в той же папке? – ArrowHead

+0

Я уверен, что include require_once ('tcpdf.php') прав, потому что для теста я использую одну и ту же папку, когда в процессе производства код таблицы для печати будет генерироваться из функции PHP, использующей mysql db для вставки данных – Ossarotte