Reputation: 325
I would try to print a dynamically generated html table on a pdf, for trying I copy table html code in a PHP file and use the tcpdf example for print it on a pdf but this not work.
This is the link of html code of table table code.
This is the PHP code:
<?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> </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> </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')
?>
but only the second table was printing;
Any help or advice would be appreciated ...
Upvotes: 2
Views: 4837
Reputation: 325
After a long time of test i find the problem ... are the letters with accents like 'à' or 'ù' in UTF-8
for solving the problem change the line
$pdf->writeHTML($tbl, true, false, false, false, '');
in
$tbl=utf8_encode($tbl);
$pdf->writeHTML($tbl, true, false, false, false, '');
and it work!!!!
Upvotes: 3
Reputation: 609
You are missing a semicolon on your last line.
Change
$pdf->Output('example_print.pdf', 'I')
to
$pdf->Output('example_print.pdf', 'I');
Lastly, there should be no margin with your terminating end of HEREDOC
EOD;
See the HEREDOC section on PHP: The right way
Upvotes: 0