LINUXSOFT.cz Přeskoč levou lištu
Uživatel: Heslo:  
   CZUKPL

> PHP (56) - Tisk a PDF

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 | Články autora | přečteno 59892×

Komerční sdělení: Pořádáme Kurzy PHP

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.

HTML stránka optimalizovaná pro tisk

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:

  • Co nejméně druhů písma - třeba i jen jeden
  • Co nejméně grafiky - nejlépe žádná, ještě tak nějaké to jednoduché logo
  • Co nejméně barev - měla by stačit černá a bílá.

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>";
?>

Spustit skript

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.

PHP a PDF

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();
?>

Spustit skript

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:

  1. Je potřeba použít české fonty. Jejich tvorbu a vložení do výsledného PDF souboru popisuje manuál k FPDF. Vřele doporučuji nejprve to celé přečíst, pak pochopit a nakonec udělat (ne obráceně ;-)))
  2. FPDF nepodporuje UTF-8. Z toho vyplývá, že české fonty musejí být v ISO-8859-2 (nebo v cp 1250, ale proč???). Existuje sice klon projektu FPDF, který by měl toto omezení odstraňovat, ale nefungoval mi.
  3. Jestliže použijete znakovou sadu ISO-8859-2, musíte vkládat řetězce v ISO-8859-2!!! Jelikož máme databázi PSČ uloženou v UTF-8, příklad výše používá funkci iconv k zajištění správného překódování.

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...

Verze pro tisk

pridej.cz

 

DISKUZE

Tisk a PDF - vložená knihovna 15.10.2004 16:20 Dalibor Smolík
L Re: Tisk a PDF - vložená knihovna 16.10.2004 11:43 Petr Zajíc
ufpdf 19.10.2004 12:45 Matej Konecny
L Re: ufpdf 5.12.2006 16:13 sstevko
Narocnost generovani 4.2.2005 22:51 Jan Baroš
L Re: Narocnost generovani 5.2.2005 10:36 Petr Zajíc
Otevření vytvořeného PDF souboru 24.2.2005 08:11 Petr Přibyl
L Re: Otevření vytvořeného PDF souboru 24.2.2005 08:28 Petr Přibyl
  L Re: Otevření vytvořeného PDF souboru 19.4.2005 08:18 Petr Zajíc
Extrahování dat z existujícího pdf 25.6.2008 23:17 Milan Jirásek
  L Re: Extrahování dat z existujícího pdf 25.6.2008 23:22 Milan Jirásek
    L Re: Extrahování dat z existujícího pdf 26.6.2008 16:01 Aleš Hakl




Příspívat do diskuze mohou pouze registrovaní uživatelé.
> Vyhledávání software
> Vyhledávání článků

15.5.2017 23:50 /František Kučera
Máš rád svobodný software a hardware nebo se o nich chceš něco dozvědět? Zajímá tě DIY, CNC, SDR nebo morseovka? Přijď na sraz spolku OpenAlt, který se bude konat ve čtvrtek 18. května od 18:00 v Radegastovně Perón (Stroupežnického 20, Praha 5).
Přidat komentář

12.5.2017 16:42 /Honza Javorek
PyCon CZ, česká konference o programovacím jazyce Python, se po dvou úspěšných ročnících v Brně bude letos konat v Praze, a to 8. až 10. června. Na konferenci letos zavítá např. i Armin Ronacher, známý především jako autor frameworku Flask, šablon Jinja2/Twig, a dalších projektů. Těšit se můžete na přednášky o datové analytice, tvorbě webu, testování, tvorbě API, učení a mentorování programování, přednášky o rozvoji komunity, o použití Pythonu ve vědě nebo k ovládání nejrůznějších zařízení (MicroPython). Na vlastní prsty si můžete na workshopech vyzkoušet postavit Pythonem ovládaného robota, naučit se učit šestileté děti programovat, efektivně testovat nebo si v Pythonu pohrát s kartografickým materiálem. Kupujte lístky, dokud jsou.
Přidat komentář

2.5.2017 9:20 /Eva Rázgová
Putovní konference československé Drupal komunity "DrupalCamp Československo" se tentokrát koná 27. 5.2017 na VUT FIT v Brně. Můžete načerpat a vyměnit si zkušenosti z oblasti Drupalu 7 a 8, UX, SEO, managementu týmového vývoje, využití Dockeru pro Drupal a dalších. Vítáni jsou nováčci i experti. Akci pořádají Slovenská Drupal Asociácia a česká Asociace pro Drupal. Registrace na webu .
Přidat komentář

1.5.2017 20:31 /Pavel `Goldenfish' Kysilka
PR: 25.5.2017 proběhne v Praze konference na téma Firemní informační systémy. Hlavními tématy jsou: Informační systémy s vlastní inteligencí, efektivní práce s dokumenty, mobilní přístup k datům nebo využívání cloudu.
Přidat komentář

15.4.2017 15:20 /František Kučera
Máš rád svobodný software a hardware nebo se o nich chceš něco dozvědět? Zajímá tě IoT a radiokomunikace? Přijď na sraz spolku OpenAlt, který se bude konat ve středu 19. dubna od 18:30 v Šenkovně (Sokolská 60, Praha 2).
Přidat komentář

5.3.2017 19:12 /Redakce Linuxsoft.cz
PR: 23. března proběhne v Praze konferenci na téma Cloud computing v praxi. Hlavními tématy jsou: Nejžhavější trendy v oblasti cloudu a cloudových řešení, Moderní cloudové služby, Infrastruktura současných cloudů, Efektivní využití cloudu, Nástrahy cloudových řešení a jak se jim vyhnout.
Přidat komentář

27.2.2017 22:12 /František Kučera
Pozvánka na 137. sraz OpenAlt – Praha: Tentokrát jsme si pro vás připravili neobvyklou akci. Ve středu 1.3. v 17:30 nás přivítá sdružení CZ.NIC ve svých prostorách v Milešovské ulici číslo 5 na Praze 3, kde si pro nás připravili krátkou prezentaci jejich činnosti. Následně navštívíme jejich datacentrum pod Žižkovskou věží. Provedou nás prostory, které jsou běžnému smrtelníkovi nedostupné!
Po ukončení prohlídky se všchni odebereme do hostince U vodoucha, Jagelonská 21, Praha 3 pochutnat si na některém z vybraných piv či dát si něco na zub. Rezervaci máme od 19:30, heslo je OpenAlt.
Ale pozor! Do prostor datového centra máme omezený přístup, dostane se tam pouze 10 lidí! Takže kdo přijde dříve, ten má přednost, a občanky s sebou! Kdo nebude chtít na prohlídku datového centra, může se pomalu přesunout do hostince U vodoucha a u nepřeberné nabídky piv počkat na ostatní.
Přidat komentář

18.1.2017 0:49 /František Kučera
Členové a příznivci spolku OpenAlt se pravidelně schází v Praze a Brně. Fotky z pražských srazů za uplynulý rok si můžete prohlédnout na stránkách spolku. Příští sraz se koná už 19. ledna – tentokrát je tématem ergonomie ovládání počítače – tzn. klávesnice, myši a další zařízení. Také budete mít příležitost si prohlédnout pražský hackerspace Brmlab.
Přidat komentář

   Více ...   Přidat zprávičku

> Poslední diskuze

15.6.2017 9:34 / Ondřej Havlas
php,

10.6.2017 10:39 / Temple
sell home for cash

11.5.2017 23:32 / lelo
Re: Problém se správcem balíčků

11.5.2017 5:45 / davd mašek
Re: Problém se správcem balíčků

10.5.2017 22:54 / lelo
Re: Problém se správcem balíčků

Více ...

ISSN 1801-3805 | Provozovatel: Pavel Kysilka, IČ: 72868490 (2003-2017) | mail at linuxsoft dot cz | Design: www.megadesign.cz | Textová verze