2016-03-30 18 views
1

Bir PHP dosyasında tablo html kodunu kopyalamak ve bir pdf üzerinde yazdırmak için tcpdf örneğini kullanıyorum denemek için dinamik olarak oluşturulmuş bir html tablosunu bir pdf'ye yazdırmayı denerdim, ancak bu işe yaramıyor.PHP TCPDF baskı tablosu çalışmıyor

Bu, table code tablosundaki html kodunun bağlantısıdır.

Bu

PHP kodu:

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

ama sadece ikinci tablo basıyordum;

Herhangi bir yardım veya tavsiye mutluluk duyacağız ...

+0

Son satırınız sonlandırılmadı $ pdf-> Çıktı ('example_print.pdf', 'I'); yarı kolon eksik – ArrowHead

+0

semicol sorunu çözmek değil .... – Ossarotte

+0

Çözümü sorunundan kaldırdım. Cevap olarak eklemelisiniz ve sonra kabul edilen cevap olarak işaretleyebilirsiniz. Oylama düğmelerinin altında, üzerine tıklayabileceğiniz bir onay işaretiniz var. Bu, herkesin sorunun çözüldüğünü ve siz kendiniz çözdüğünü söyleyecektir. –

cevap

2

testin Uzun bir süre sonra ben sorun hattını

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

değiştirmek çözümü için UTF-8

yılında 'A' veya 'U' gibi aksanlı harfler ... sorun bulmak vardır

ve işe yarıyor !!!!

0

Sen son satırında noktalı virgül eksik.

Değişim

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

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

için Son olarak, üzerinde heredoc bölümüne bakın heredoc

EOD; 

sizin sonlandırma sonu ile hiçbir marj olmalıdır PHP: The right way

+0

Son virgül olduğu için problemi çözmek değil, çünkü bir satır doğru değil, bir hatadır, fakat eğer doğru değilse durumu değiştirmeyin ... HEREDOC'un marjı, orijinal dosyada sadece bir kesme ve yapıştırma hatası olup, kenar boşluğu yoktur. – Ossarotte

+0

Bu değişiklikleri yerel makinemde yaptım ve işe yarıyor. Include ifadesinin require_once ('tcpdf.php') olduğundan emin misiniz? doğrudur ? Tcpdf.php dosyası aynı klasörde mi? – ArrowHead

+0

Eminim ifadeyi gerektirir require_once ('tcpdf.php') haklı çünkü test için aynı klasörü kullanıyorum, üretim sırasında tablo kodu yazdırmak için bir mysql db kullanan bir PHP fonksiyonundan veri üretilecek – Ossarotte