Internetové technologie Petr Kašpar KAS265
Obsah Formát PDF Možnosti tvorby v PHP Třída FPDF České fonty Ahoj světe! Buňky Záhlaví/zápatí Pluginy Komplexní ukázka
Formát PDF Portable Document Format Vznik v roce 1993, firma Adobe Částečně vychází z PostScriptu Od roku 2008 otevřený standard Norma ISO 32000-1:2008 Podpora textu, rastrových i vektorových obrazů, 3D objekty, JavaScript, plug-iny Čtečky Adobe Reader, Foxit, Proč PDF v PHP?
Možnosti vytváření PDF v PHP FPDF Jednoduchá třída pro vytváření PDF Podpora všech základních operací Zend_Pdf (Zend Framework) Vytváření, načítání, modifikace PDF PDFlib, PDFlib Lite Nutnost zkompilovat jádro PHP s parametrem --with-pdflib Lite verze pro nekomerční účely Další způsoby Třídy TCPDF, PHPExcel a další
FPDF Homepage projektu: http://www.fpdf.org/ Třída pro PHP Funguje s PHP4 i PHP5 Žádné speciální požadavky Defaultně neobsahuje české fonty Nepodporuje kódování UTF8, musíme pracovat v CP-1250 Iconv, mysql_query("set NAMES 'cp1250'") Existuje rozšíření UFPDF Tolerantní licence
FPDF Vytvoření českých fontů 1/2 Vytvoření metriky a Adobe Type 1 fontu z TrueType fontu Utilita ttf2pt1 (http://www.fpdf.org/fr/dl.php?id=22) Mapovací soubor cp1250.map (adresář font/makefont/) Ovládání z příkazové řádky: ttf2pt1 -b -L cp1250.map c:\windows\fonts\arial.ttf arial Výstupem jsou soubory *. afm a *. pfb
FPDF Vytvoření českých fontů 2/2 Vytvoření definice fontu Vytváří se scriptem v PHP z afm a pfb souborů <?php require('font/makefont/makefont.php'); MakeFont('arial.pfb','arial.afm','cp1250');?> Výstupem jsou soubory *.php a *.z Oba nakopírujeme do adresáře /fonts/
FPDF Ahoj světe! <?php require('fpdf.php'); $pdf=new FPDF(); $pdf->addpage(); $pdf->addfont('arial','','arial.php'); $pdf->addfont('arial','i','ariali.php'); $pdf->setfont('arial','',16); $pdf->cell(60,10,'ahoj světe! Ěščřžýáíé.',1,1); $pdf->setfont('arial','i',16); $pdf->cell(60,10,'ahoj světe! Ěščřžýáíé.',0); $pdf->output();?>
FPDF Ahoj světe!
FPDF Základní funkce Přidání stránky AddPage([string orientation,[ mixed format]]) Přidání a výběr písma AddFont(string family [, string style [, string file]]) SetFont(string family [, string style [, float size]]) Vyrenderování dokumentu string Output([string name, string dest]) Dest: I otevřít v prohlížeči, D nabídnout ke stáhnutí, F uložit na disk, S vrátí v textové podobě
FPDF Buňky Jednořádková buňka Cell(float w [, float h [, string txt [, mixed border [, int ln [, string align [, boolean fill [, mixed link]]]]]]]) Víceřádková buňka MultiCell(float w, float h, string txt [, mixed border [, string align [, boolean fill]]]) Barvy SetTextColor(int r [, int g, int b]) SetFillColor(), SetDrawColor() Prázdný řádek Ln([float h])
FPDF Buňky Kód 1/2 <?php require('fpdf.php'); $pdf=new FPDF(); $pdf->addpage(); $pdf->addfont('arial','','arial.php'); $pdf->setfont('arial','',16); $pdf->setfillcolor(200); $pdf->cell(65,10,'text s rámečkem.',1); $pdf->cell(70,10,'text s pozadím + střed.',0,2,c,true); $pdf->cell(70,10,'zarovnání podle předchozího.',0,1); $pdf->setdrawcolor(255,0,0); $pdf->settextcolor(0,255,0); $pdf->setlinewidth(1); $pdf->cell(70,10,'nový řádek + barvy.',1);
FPDF Buňky Kód 2/2 $pdf->cell(50); $pdf->settextcolor(100); $pdf->setfont('arial','u',12); $pdf->cell (50,10,'Odkaz',null,null,null,null,'http://www.vsb.cz'); $pdf->ln(30); $pdf->setfont('arial','',12); $pdf->settextcolor(0); $pdf->multicell (50,5,'Dlouhý text text text text text text text text text text text text text text text text'); $pdf->output();?>
FPDF Buňky Ukázka
FPDF Záhlaví/zápatí Vytvoříme novou třídu, která dědí z FPDF Přepíšeme metody Header() a Footer() <?php require('fpdf.php'); class PDF extends FPDF { function Header() { $this->image('fei-new.jpg',10,10,15); $this->addfont('arial'); $this->setfont('arial'); $this->cell(0,8,'vysoká škola báňská - TUO',0,2,'R'); $this->cell(0,8,'fei',0,0,'r'); $this->line(10, 28, 200, 28); }
FPDF Záhlaví/zápatí function Footer() { $this->sety(-15); $this->setfont('arial','',8); $this->cell(0,10,'stránka '.$this->pageno().'/{s}',0,0,'l'); $this->cell(0,10,'datum '.date("j.n.y H:i:s"),0,0,'R'); } } //Použití $pdf=new PDF(); $pdf->aliasnbpages('{s}'); $pdf->addpage(); $pdf->addpage(); $pdf->addpage(); $pdf->output();?>
FPDF Záhlaví/zápatí Ukázka
FPDF Pluginy Dostupné pod odkazem Scripts na http://www.fpdf.org/ Rozšiřují FPDF o spoustu nových funkcí Čárkové kódy (EAN, POSTNET a další) Nové tvary (elipsa, zakulacený obdélník a další) Import EPS/AI, průhlednost Grafy, stromové struktury, vodoznaky JavaScript, záložky A spousta dalších
FPDF složitější příklad
Další informace Oficiální stránky projektu FPDF http://www.fpdf.org/ Česká mutace oficiálních stránek http://www.fpdf.cz/ Rozsáhlé informace o formátu PDF http://en.wikipedia.org/wiki/portable_document_format Ostatní software pro tvorbu PDF http://framework.zend.com/manual/en/zend.pdf.html http://www.pdflib.com/ http://www.codeplex.com/phpexcel