Podívejme se, jak lze pomocí PHP realizovat tisk informací z webových stránek a jejich export do PDF!
15.10.2004 15:00 | Petr Zajíc | přečteno 65595×
Jestliže používáte PHP pro tvorbu opravdu pokročilých aplikací, dříve či později narazíte na problém tvorby nějakých solidních tiskových výstupů. Většinou totiž nestačí data prezentovat na webové stránce, ale bývá potřeba zajistit, aby si je uživatel mohl vytisknout. Dnes si ukážeme na několik způsobů, jak tento problém řešit.
Dejme tomu, že budeme potřebovat vytisknout seznam všech pražských
PSČ (narážím na tento poněkud nereálný příklad proto, že máme k
dispozici databázi s PSČ). Ukažme si, jak na to s pomocí PHP můžeme jít
dvěma
různými způsoby.
Tuto možnost nabízí mnoho webů. Není to nic magického; informace se postě zformátují tak, aby se daly snadno vytisnkout a zobrazí se. Při tvorbě stránky pro tištění byste měli mít na paměti tyto zásady:
Kdybychom uvedené zásady použili pro náš příklad, mohli bychom napsat něco jako:
<?
// zde je include souboru s
konstantami
mysql_connect(SQL_HOST, SQL_USERNAME, SQL_PASSWORD);
mysql_select_db(SQL_DBNAME);
$vysledek=mysql_query("select * from psc where
obec like '%Praha%'");
echo "<TABLE border=\"1\"
style=\"border-collapse: collapse;\">";
while ($zaznam=MySQL_Fetch_Array($vysledek)):
echo "<TR>";
echo "<TD>".$zaznam["obec"]."</TD>";
echo "<TD>".$zaznam["psc"]."</TD>";
echo "</TR>";
endwhile;
echo "</TABLE>";
?>
To s sebou přináší pochopitelně mnoho problémů. Především, musíme se
spoléhat na tiskové schopnosti našeho prohlížeče, a ty nejsou vždy
dostačující. A také nejsou ve všech prohlížečích srovnatelné. Je třeba
dosti velký problém nastavit okraje stránky tak, aby sestava vypadala
ucházejícím způsobem (i když se spokojíme s testováním jen na několika
nejběžnějších prohlížečích). Je jasné, že pro kvalitní výstupy se
budeme muset
porozhlédnout po něčem jiném.
Naprosto ideální je pro tiskové výstupy z PHP použít legendární
formát PDF. U PDF
totiž můžete lehce nastavit takové "drobnosti" jako písmo, znakovou
sadu, orientaci
stránky a její velikost, okraje a tak dále. Navíc máte jistotu, že
sestava bude vypadat na všech systémech stejně, a to je k nezaplacení.
Poměrně propracovaný projekt, zabývající se přímou tvorbou souborů PDF
pomocí PHP je FPDF.
Pokud byste chtěli knihovnu FPDF ve svých skriptech použít, asi Vám
nezbude nic jiného, než si trochu projít dokumentaci. Naznačím ale, jak
by se výše
uvedený příklad převedl do situace, v níž budeme výstup exportovat do
PDF. Vložený soubor fpdf.php obsahuje definici třídy, sloužící pro
tvorbu pdf.
<?
require('fpdf.php');
// zde je include souboru s
konstantami
mysql_connect(SQL_HOST, SQL_USERNAME, SQL_PASSWORD);
mysql_select_db(SQL_DBNAME);
$pdf=new FPDF();
$pdf->AddFont('Arial','','arial.php');
$pdf->AddPage();
$pdf->SetFont('Arial','');
$vysledek=mysql_query("select * from psc where
obec like '%Praha%'");
while ($zaznam=MySQL_Fetch_Array($vysledek)):
$pdf->Cell(120,8, iconv("UTF-8", "ISO-8859-2", $zaznam["obec"]),1);
$pdf->Cell(20,8, iconv("UTF-8", "ISO-8859-2", $zaznam["psc"]),1,1,'R');
endwhile;
$pdf->Output();
?>
Vypadá to jednoduše a skutečně to jednoduché je. Klíčovou funkcí je
funkce Cell, popaná podrobně v manuálu. Její funkce
je zjednodušeně řečeno taková, že umístí text na předem daný "čtverec"
ve výsledném dokumentu PDF. Funkce AddFont vloží písmo do PDF
dokumentu, takže máme jistotu, že na všech systémech se dokument objeví
stejně.
Pokud budete chtít mít v PDF správně češtinu (jako že asi chtít
budete), může se Vám celý export změnit v peklo na zemi. Následující
postřehy by Vás měly ušetřit nejhoršího:
Knihovna FPDF toho umí samozřejmě víc. Text můžete zarovnávat, sázet ve sloupcích, otáčet a tak dále. Na stránce projektu je rovněž mnoho příkladů. Domnívám se, že tento styl uvažování (PHP->PDF) má ve světě otevřených formátů svoji budoucnost a že tiskových exportů tohoto typu bude přibývat. Takže, vzhůru do studia...