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ů
Výstupem jsou soubory *.php a *.z Oba nakopírujeme do adresáře /fonts/
FPDF – Ahoj světe! 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 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() 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