29 września 2016

Generowanie plików PDF w PHP z użyciem HTML

Kategoria: PHP Autor: FX

Bibiloteka zewnętrzna TCPDF służy do generowania plików PDF w języku PHP.

Wymaga pobrania biblioteki ze strony:
TCPDF -> GitHub -> Clone or Download -> Download .ZIP

Rozpakowujemy pliki na serwerze w osobnym katalogu.
Pierwsze aplikacje uruchamiamy w rozpakowanym podfolderze „examples” – mamy wówczas wszystkie dostępne ścieżki pod ręką (czcionki, języki itd.).

Biblioteka zawiera wiele przydatnych funkcji formatowania tekstu i dzielenia strony. Jeśli jednak potrzebujemy biblioteki do zrobienia podstawowego pliku PDF bez dbałości o wodotryski, możemy stronę sformatować w zwykłym HTML używając podstawowych tagów (tabelki, wypunktowania, zmiany alignacji, czcionki, obrazki itd).

Używamy do tego funkcji WriteHTML

1
$pdf->WriteHTML(..... );

Podstawowy przykład wygląda tak:
przykladPDF.php (w katalogu ‚examples’):

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
<?php
require_once('tcpdf_include.php');
$pdf = new TCPDF(PDF_PAGE_ORIENTATION, PDF_UNIT, PDF_PAGE_FORMAT, true, 'UTF-8', false);
$pdf->SetMargins(PDF_MARGIN_LEFT+10, 8, PDF_MARGIN_RIGHT+10); //marginesy. drugi - góra
$pdf->setImageScale(PDF_IMAGE_SCALE_RATIO);
if (@file_exists(dirname(__FILE__).'/lang/pol.php')) {
        require_once(dirname(__FILE__).'/lang/pol.php');
        $pdf->setLanguageArray($l);
}
$pdf->setPrintHeader(false); // usunięcie stopki i nagłówka strony header/footer
$pdf->setPrintFooter(false);
$pdf->SetFont('dejavusans', '', 8); //polskie znaki - dejavusans lub freesans
$pdf->AddPage();
$html = '<h2>Przykład HTML</h2>
<hr width="600">
<ul>
        <li><b>Pogrubiony</b></li>
        <li><i>Pochylony</i></li>
        <li><s>Przekreślony</s></li>
</ul>
<table border="1" width="600">
 <tr>
        <th>Imię</th>
        <th>Nazwisko</th>
  </tr>
  <tr>
        <td>Jan</td>
        <td>Kowalski</td>
  </tr>
  <tr>
    <td>Marek</td>
        <td>Wiśniewski</td>
  </tr>
</table>
'
;
$pdf->writeHTML($html, true, false, true, false, '');
$pdf->Output('przyklad.pdf', 'I');
?>

Komentowanie wyłączone.