Generowanie PDF
W tym artykule postaram się wprowadzić was w podstawy generowania plików PDF w PHP.
Przykład #1
Myślę że tyle tytułem wstępu wystarczy, pora zabierać się do pracy. Nie będę omawiał poniższego kodu, gdyż wszystko jest w komentarzach.
![]()
// tworzymy nowy dokument i w zmiennej $pdf przechowujemy uchwyt do niego
$pdf = pdf_new();
//otwieramy nowy pusty plik
pdf_open_file($pdf, "");
//rozpoczynamy nową stronę
pdf_begin_page($pdf, 595, 842);
//ustawiamy czcionkę na Times New Roman, rozmiar: 16
pdf_set_font($pdf, "Times-Roman", 16, "host");
//wypisz tekst na konkretnej pozycji. Uwaga! Pozycja pionowa od dołu!
pdf_show_xy($pdf, 'Test',50,820);
![]()
//zakończ stronę
pdf_end_page($pdf);
![]()
//zamknij dokument
pdf_close($pdf);
![]()
//pobierz dane z dokumentu
$data = pdf_get_buffer($pdf);
//prześlij nagłówek z informacją o typie dokumentu (czyli PDF :) )
header("Content-type: application/pdf");
header("Content-disposition: inline; filename=test.pdf");
header("Content-length: " . strlen($data));
![]()
//wyświetl zawartość dokumentu php
echo $data;
![]()
W wygenerowanym dokumencie PHP zobaczymy napisane czcionką Times New Roman słowo "Test".
Przykład #2
Po zapoznaniu się z przykładem #1 możesz sobie pomyśleć "No i pięknie, ale po co tyle zachodu - nie łatwiej byłoby wygenerować HTML?".
Odpowiedź brzmi: łatwiej, ale nie lepiej. Okazuje się że w wielu przypadkach "przenośność" dokumentu którą gwarantuje nam PDF jest wręcz konieczna. Przykład? Chociażby podanie o pracę wypełniane elektronicznie - ale sprawdzane ręcznie.
Poniższy kod wyświetli formularz z zapytaniem o dane - a po wypełnieniu wygeneruje PDF z danymi wpisanymi przez użytkownika.
![]()
//jeśli jest przesyłany formularz:
if (isset($_POST["imie"])){
![]()
//pobierz dane z formularza
$u_imie=$_POST["imie"];
$u_wiek=$_POST["wiek"];
$u_mail=$_POST["mail"];
$u_gg =$_POST["gg"];
![]()
//musimy podzielić opis na tablicę z kolejnymi liniami
$u_opis = explode("n",$_POST["opis"]);
![]()
// tworzymy nowy dokument i w zmiennej $pdf przechowujemy uchwyt do niego
$pdf = pdf_new();
//otwieramy nowy pusty plik
pdf_open_file($pdf, "");
//rozpoczynamy nową stronę
pdf_begin_page($pdf, 595, 842);
//ustawiamy czcionkę na Times New Roman, rozmiar: 16
pdf_set_font($pdf, "Times-Roman", 16, "winansi");
//wypisz tekst na konkretnej pozycji. Uwaga! Pozycja pionowa od dołu!
pdf_show_xy($pdf, 'Dane uzytkownika:',50,820);
![]()
![]()
//wypisz dane uzytkownika:
pdf_set_font($pdf, "Times-Roman", 13, "winansi");
![]()
pdf_show_xy($pdf, 'Imie: '.$u_imie,60,800);
pdf_show_xy($pdf, 'Wiek: '.$u_wiek,60,785);
pdf_show_xy($pdf, 'Mail: '.$u_mail,60,770);
pdf_show_xy($pdf, 'GG #: '.$u_gg , 60,755);
pdf_show_xy($pdf, 'Opis: ', 60,740);
![]()
//ustaw kursor na prawo od napisu "Opis:" - będzie ładniej wyglądało
pdf_show_xy($pdf,"", 90,740);
//wyzeruj zmienną dla pętli
$i=0;
//rozpocznij pętlę
while ($u_opis[$i] != "")
{
//napisz kolejną linię
pdf_continue_text($pdf,$u_opis[$i]);
//zwiększ licznik
$i++;
}
![]()
![]()
//zakończ stronę
pdf_end_page($pdf);
![]()
//zamknij dokument
pdf_close($pdf);
![]()
//pobierz dane z dokumentu
$data = pdf_get_buffer($pdf);
//prześlij nagłówek z informacją o typie dokumentu (czyli PDF :) )
header("Content-type: application/pdf");
header("Content-disposition: inline; filename=test.pdf");
header("Content-length: " . strlen($data));
![]()
//wyświetl zawartość dokumentu php
echo $data;
}
else{
![]()
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1250">
</head><body>
<form method="POST" action=" echo $PHP_SELF;">
<table border=0>
<tr><td>Imię:</td><td> <input name="imie" /></td>
<tr><td>Wiek:</td><td> <input name="wiek" /></td>
<tr><td>Mail:</td><td> <input name="mail" /></td>
<tr><td>Gadu-Gadu: </td><td><input name="gg" /></td>
<tr><td>Opis:</td><td><textarea name="opis">
Więcej informacji o generowaniu PDF uzyskasz tutaj: pdf










