100 likes | 228 Views
SLOVENSKÁ TECHNICKÁ UNIVERZITA Fakulta chemickej a potravinárskej technológie Ústav informatizácie, automatizácie a matematiky. Generovanie výstupov z informačného systému ústavu vo formáte PDF Vypracoval: Bc. Jozef Krivák Vedúci semestrálnej práce: Ing. Ľuboš Čirka, PhD. Aplikácia FPDF.
E N D
SLOVENSKÁ TECHNICKÁ UNIVERZITAFakulta chemickej a potravinárskej technológieÚstav informatizácie, automatizácie a matematiky Generovanie výstupov z informačného systému ústavu vo formáte PDF Vypracoval: Bc. Jozef Krivák Vedúci semestrálnej práce: Ing. Ľuboš Čirka, PhD.
Aplikácia FPDF • Aplikácia FPDF pre PHP maximálne zjednodušuje generovanie PDFiek a ponúka obrovské množstvo možností. Táto aplikácia zabezpečí vygenerovanie PDFka čisto z prostredia PHP, nepotrebuje žiadne neštandardné knižnice, ktoré zväčša na komerčných zdieľaných serveroch nie sú k dispozícií. • FPDF sa dá stiahnuť zo stránky http://www.fpdf.org a po rozbalení je bez nutnosti nejakej konfigurácie hneď funkčná. <?php require('fpdf.php'); $pdf=new FPDF(); $pdf->addPage(); $pdf->SetFont('Arial','B',16); $pdf->Text(20,30,'Hello World'); $pdf->Output(); ?>
Hlavné funkcie FPDF • Možnosť premeriavania a formátovania stránok • Vkládanie hlavičky a päty • Automatické zlomy strán • Automatické orezávanie riadkov a rozdeľovanie textu • Podpora obrázkov • Farby • Linky
Tlačidlo ako odkaz pre PDF aplikáciu <input type='button' name='send' value='".get_string('showPDF').“’ onclick='this.form.create_pdf.value=1;this.form.action.value=1; this.form.submit();' /><input type='hidden' name='create_pdf' value='' /> <?php if($_GET['create_pdf']==1) { include_once"iam_function_krivak.php"; exit; } ?>
Štruktúra rozvrhu • Funkcia „Require( )“ - umožňuje do svojho PHP skriptu načítať súbor, ktorý obsahuje prakticky čokoľvek (blok príkazov PHP, obyčajný text, funkcie,...). • Funkcia „new FPDF( )” - slúži na inicializáciu triedy súboru • Funkcia „AddPage( )“ – vytvára novú stránku • Funkcia „Output( )“ – uzaviera dokument a posiela ho na žiadanú adresu • Funkcia „AddFont( )“ - Funkcia importuje font typu „TrueType“ alebo „Type1“ a pripraví ho k použitiu • Funkcia „SetFont( )“ - Určí druh fontu, ktorý chceme práve použiť • Funkcia „Cell( )“ – vykresľuje zadaný text do blokov • Funkcia „SetLineWidth( )“ - definuje hrúbku vykresľovaných čiar
$spojenie = @mysql_pconnect("localhost", "root"); if (!$spojenie) { echo "Nepodarilo sa pripojit k databaze."; exit; } $db = @mysql_select_db("iam"); if (!$db) { echo "Nepodarilo sa nacitat tabulky."; exit; } @mysql_query("SET CHARACTER SET utf8"); @mysql_query("SET NAMES 'utf8'"); @mb_internal_encoding("UTF-8"); Funkcia „timetable“ využíva podmienky zabezpečujúce správne nastavenie žiadaných údajov a obsahuje hlavný „Select“ na uloženie údajov Funkcia „course_teachers“ keďže „Select“ zapíše pod hlavičkou „timetable_lector“ identifikačné čísla vyučujúcich, táto funkcia ich prepisuje na samotné mená Premenná „cfg_day_array“ rieši rovnaký problém ako funkcia „course_teachers“, pričom nahradzuje čísla dní za ich pomenovania MySQL databáza a potrebné funkcie
Tabuľka „MultiCell“ Hlavným cieľom takejto tabuľky je dynamicky prepočítavať výšku jednotlivých blokov s rôznym počtom riadkov v závislosti od dĺžky vykresľovaného textu. Prepočítavajú sa vždy bloky zoradené za sebou, čiže v našom prípade šesť blokov, ktoré spolu tvoria jeden riadok tabuľky. Za výslednú výšku sa vždy berie výška najvyššieho bloku a ostatné bloky si podľa neho svoju výšku zmenia. Celý tento skript ako aj jeho použitie a ukážka sú voľne stiahnuteľné na www.fpdf.org. • Funkcia „MultiCell( )“ umožňuje vykreslenie textu do bloku pričom v prípade dlhšieho textu ako šírka bloku ho zalomí a rozdelí do riadkov
Použitie funkcií • Pre správne vykresľovanie všetkých údajov je potrebné všetky vyššie spomenuté funkcie implementovať do nášho skriptu. • Po začlenení týchto funkcií môžme konečne včleniť jednotlivé údaje z databázy do nášho PDF dokumentu. • Uložené údaje do premennej „querry“ za pomoci „Select“ z funkcie „Timetable“ prekonvertujeme do poľa a môžeme ich používať, vkladať a cykliť vo výslednom dokumente. • V cykle si na konci ako prvé nastavíme jednotlivé šírky našich „MultiCell“ blokov pomocou funkcie „SetWidths“, následne ich pomocou funkcie „Row“ vyplníme. $pdf->SetWidths(array(20,77,18,20,20,35)); $pdf->Row(array($pole[$i]['timetable_start'].":00 - ".$pole[$i]['timetable_stop'].":00", iconv('UTF-8','CP1250',$pole[$i]['course_title']), iconv('UTF-8','CP1250',$pole[$i]['timetable_room']), iconv('UTF-8','CP1250',str_replace(",",", ",$pole[$i]['timetable_group'])), iconv('UTF-8','CP1250',$pole[$i]['timetable_class']), iconv('UTF-8','CP1250',course_teachers($pole[$i]['timetable_lector']))));