}w!"#$%&'()+,-./012345<ya

Podobné dokumenty
VÝVOJ INTERNETOVÝCH APLIKACÍ - VIA

Instalace a konfigurace web serveru. WA1 Martin Klíma

ÚPRAVA BAKALÁŘSKÉ A DIPLOMOVÉ PRÁCE

úvod Historie operačních systémů

Elektronické publikování. doc. RNDr. Petr Šaloun, Ph.D. katedra informatiky FEI VŠB TU Ostrava

Současný svět Projekt č. CZ.2.17/3.1.00/32038, podpořený Evropským sociálním fondem v rámci Operačního programu Praha adaptabilita

TVORBA TEXTOVÉHO DOKUMENTU PROSTŘEDKY, PŘENOSITELNOST

Aplikace pro srovna ní cen povinne ho ruc ení

PHP PHP je skriptovací programovací jazyk dynamických internetových stránek PHP je nezávislý na platformě

1. Témata maturitních prací. 2. Termín závazného zadání maturitní práce. 3. Termín odevzdání maturitní práce. 4. Kritéria hodnocení maturitní práce

Pokyny k vypracování závěrečné maturitní práce

Programy pro psaní textů. textové editory, textové procesory

INOVACE PŘEDMĚTŮ ICT. MODUL 11: PROGRAMOVÁNÍ WEBOVÝCH APLIKLACÍ Metodika

MBI - technologická realizace modelu

rychlý vývoj webových aplikací nezávislých na platformě Jiří Kosek

MATLABLINK - VZDÁLENÉ OVLÁDÁNÍ A MONITOROVÁNÍ TECHNOLOGICKÝCH PROCESŮ

Střední průmyslová škola elektrotechnická Praha 10, V Úžlabině 320 M A T U R I T N Í T É M A T A P Ř E D M Ě T U

Kurz je rozdělen do čtyř bloků, které je možné absolvovat i samostatně. Podmínkou pro vstup do kurzu je znalost problematiky kurzů předešlých.

III/2 Inovace a zkvalitnění výuky prostřednictvím ICT EU-OVK-VZ-III/2-ZÁ-310

Grafický software ve výuce a pro výuku

Vstupní požadavky, doporučení a metodické pokyny

VÝUKOVÝ MATERIÁL. Bratislavská 2166, Varnsdorf, IČO: tel Číslo projektu

Maturitní otázky z předmětu PROGRAMOVÁNÍ

Zadání a pokyny k vypracování maturitní práce z Navrhování

Střední průmyslová škola elektrotechnická Praha 10, V Úžlabině 320

Zadání maturitní práce ve školním roce 2016/2017

Textové editory. Ing. Luděk Richter

Pravidla vypracování maturitní práce

Excel pro začátečníky

Internet 2 css, skriptování, dynamické prvky

Třídy a objekty. Třídy a objekty. Vytvoření instance třídy. Přístup k atributům a metodám objektu. $z = new Zlomek(3, 5);

Olga Rudikova 2. ročník APIN

Databázové aplikace pro internetové prostředí PHP úvod, základní princip, vkládání skriptu, komentáře, výpis na obrazovku

Pravidla vypracování maturitní práce

Pokyn ředitele školy k vypracování ročníkových prací

Publikování map na webu - WMS

Využití OOP v praxi -- Knihovna PHP -- Interval.cz

Ročník VIII. Informatika. Období Učivo téma Metody a formy práce- kurzívou. Kompetence Očekávané výstupy. Průřezová témata. Mezipřed.

SADA VY_32_INOVACE_PP1

ŠKODA Portal Platform

1 Webový server, instalace PHP a MySQL 13

KOMPONENTY APLIKACE TreeINFO. Petr Štos ECM Business Consultant

Maturitní otázka webové stránky (technologie tvorby webu) Co znamená pojem Web? Web, www stránky, celým názvem World Wide Web,

ZÁKLADNÍ ŠKOLA A ZÁKLADNÍ UMĚLECKÁ ŠKOLA JESENICE, příspěvková organizace

Úprava desek práce ČESKÉ VYSOKÉ UČENÍ TECHNICKÉ V PRAZE FAKULTA STAVEBNÍ. Zde možno vložit znak ČVUT BAKALÁŘSKÁ PRÁCE Jméno, Příjmení

Využití ICT techniky především v uměleckém vzdělávání. Akademie - VOŠ, Gymn. a SOŠUP Světlá nad Sázavou

AUTOMATICKÉ ŘÍZENÍ S INTERNETOVOU KOMUNIKACÍ V PHP Automatic Control with Internet Communication in PHP

Jak využít kancelářské aplikace ve výuce MS Office Gymnázium a SOŠ Orlová Ing. Marta Slawinská

Práce se styly 1. Styl

Inovace výuky prostřednictvím šablon pro SŠ

1. Webový server, instalace PHP a MySQL 13

Jihočeská univerzita v Českých Budějovicích. Název bakalářské práce v ČJ Název bakalářské práce v AJ

Celá práce musí být tisknutelná to znamená: všechny obrázky, formuláře, tabulky atd. (které nelze do práce vložit) budou naskenované.

Formy komunikace s knihovnami

Pokyny k vypracování závěrečné maturitní práce

Základy informatiky. Elektronické publikování. Daniela Szturcová Část převzata z přednášky P. Děrgela

UŽIVATELSKÉ ŠKOLENÍ LOTUS NOTES

Pokyny pro vypracování maturitních prací 2014

Systémy pro tvorbu digitálních knihoven

III/2 Inovace a zkvalitnění výuky prostřednictvím ICT EU-OVK-VZ-III/2-ZÁ-210

PHP tutoriál (základy PHP snadno a rychle)

Zadání maturitní práce ve školním roce 2017/2018

Nové přístupy tvorby web site. Doc. Ing. Zdeněk Havlíček, CSc. KIT PEF CZU - 13/11/2001

Ročníkový projekt DYNAMICKÉ HTML. Projektová dokumentace. Jan Ehrlich, Petr Marek, Tomáš Marván, Martin Paľo. Vedoucí projektu: RNDr.

Produktový ceník pro rok 2010

Strategie ochrany před negativními dopady povodní a erozními jevy přírodě blízkými opatřeními v České republice

Pokyny pro vypracování maturitní práce pro školní rok 2017/2018

Obsah 1. Obsah. Sazba dokumentů v LATEXu 2 Úvod... 2 Vstupy... 3 Ceník... 6 Kontakt... 7 Ukázky Tvorba hudebnin v prostředí LilyPond 10

Střední škola pedagogická, hotelnictví a služeb, Litoměříce, příspěvková organizace

PHP framework Nette. Kapitola Úvod. 1.2 Architektura Nette

Počítačová prezentace. Základní pojmy. MS PowerPoint

Správa barev. PS a PDF. Správa barev. Vytvořila: Jana Zavadilová Vytvořila dne: 13. února DUM číslo: 18 Název: PS a PDF

Maturitní témata Školní rok: 2015/2016

Počítačová Podpora Studia. Přednáška 5 Úvod do html a některých souvisejících IT. Web jako platforma pro vývoj aplikací.

Kapitola 1 První kroky v tvorbě miniaplikací 11

MATURITNÍ OTÁZKY ELEKTROTECHNIKA - POČÍTAČOVÉ SYSTÉMY 2003/2004 PROGRAMOVÉ VYBAVENÍ POČÍTAČŮ

Obsah. Úvodem 9 Zpětná vazba od čtenářů 10 Zdrojové kódy ke knize 10 Errata 10

SEO OPTIMALIZACE PRO VYHLEDÁVAČE JEDNODUŠE

Škola: Gymnázium, Brno, Slovanské náměstí 7 III/2 Inovace a zkvalitnění výuky prostřednictvím ICT Název projektu: Inovace výuky na GSN

ZÁKLADY PROGRAMOVÁNÍ. Mgr. Vladislav BEDNÁŘ /14

Základní práce v souborovém manažeru

Samostatná odborná práce

Univerzita Karlova v Praze

INFORMATIKA. Grafické studio ve škole

Zadání maturitní práce ve školním roce 2016/2017

WORKWATCH ON-LINE EVIDENCE PRÁCE A ZAKÁZEK

FREEWAROVÉ ŘEŠENÍ DICOM SERVERU S NÍZKÝMI NÁROKY NA HARDWAROVÉ VYBAVENÍ

Export z OpenOffice Writer do L A T E X 2ε

SYLABUS IT V. Jiří Kubica. Ostrava 2011

Osnova kurzu OBSLUHA PC ZÁKLADNÍ ZNALOSTI. pilotního projektu v rámci I. Etapy realizace SIPVZ

Úvod do TeXu. Jan Vaněk. Nové Hrady 2011

SRSW4IT Inventarizační SW. Prezentace aplikace. Vedoucí DP: ing. Lukáš Macura Autor: Bc. Petr Mrůzek

Měření teploty, tlaku a vlhkosti vzduchu s přenosem dat přes internet a zobrazování na WEB stránce

Registrační číslo projektu: Škola adresa:

SOFISTIKOVANÉ NÁSTROJE PRO JEDNODUCHOU TVORBU PROFESIONÁLNÍCH WEBOVÝCH PREZENTACÍ

ZŠ a MŠ, Brno, Horníkova 1 - Školní vzdělávací program

Základy informatiky. Elektronické publikování. Daniela Szturcová Část převzata z přednášky P. Děrgela

Základy informatiky. HTML, tvorba WWW stránek. Daniela Szturcová Část převzata z přednášky P. Děrgela

Transkript:

MASARYKOVA UNIVERZITA FAKULTA INFORMATIKY }w!"#$%&'()+,-./012345<ya Dynamické generování PDF v prostředí webového prohlížeče BAKALÁŘSKÁ PRÁCE Štěpán Kotek Brno, jaro 2011

Prohlášení Prohlašuji, že tato bakalářská práce je mým původním autorským dílem, které jsem vypracoval samostatně. Všechny zdroje, prameny a literaturu, které jsem při vypracování používal nebo z nich čerpal, v práci řádně cituji s uvedením úplného odkazu na příslušný zdroj. Štěpán Kotek Vedoucí práce: doc. RNDr. Petr Sojka PhD. ii

Shrnutí S rozšířením internetového připojení v domácnostech i v mobilních zařízeních dochází k rozmachu aplikací spouštěných přímo v internetovém prohlížeči. Prohlížeč není pouhým nástrojem pro zobrazovaní informací, ale stává se také platformou pro webové aplikace. Nároky vývojářů na prohlížeč v některých oblastech mohou spíše připomínat nároky na operační systém. Tato práce si klade za cíl zmapovat způsoby předávání PDF souborů uživateli za použití prohlížeče a překlenout případné mezery mezi prohlížečem a operačním systémem bez obtěžování uživatele. iii

Klíčová slova PDF, webový prohlížeč, JavaScript, webová aplikace, jspdf iv

Obsah Úvod.................................. 2 1 Způsoby tvorby PDF souborů v prostředí webu....... 3 1.1 Tvorba PDF na webovém serveru............. 3 1.1.1 PHP......................... 3 1.1.2 Python........................ 5 1.1.3 Java.......................... 5 A Vytváření dokumentu pomocí FPDF.............. 7 1

Úvod Práce se skládá z několika hlavních částí. První část se zabývá srovnáním současných přístupů tvorby předávání PDF souborů v prostředí webu. V potaz jsou brány hlavně prvky dostupné ve výsledném PDF souboru, snadnost použití pro programátora a případnou činnost uživatele při tvorbě PDF souborů (typicky PDF tiskárny). Záměřením dalších částí je knihovna jspdf, která nabízí JavaScriptové rozhraní pro tvorbu PDF souborů, možnosti jejího rozšiřování a její uplatnění v praxi. 2

1 Způsoby tvorby PDF souborů v prostředí webu 1.1 Tvorba PDF na webovém serveru Vytváření souborů PDF přímo na serveru patří bezesporu mezi nejpopulárnější způsob generování PDF ve webových aplikacích. Na vlastním serveru má uživatel obvykle úplnou kontrolu nad komponentami, které se do tvorby zapojují i nad vlastním tvorbou. Mimo populárnosti je výhodné použit jej zejména v situacích, kdy stejný soubor je předáván více uživatelům, nebo kdy před předáním uživateli dochází k operacím se souborem (např. katalogizace, odeslání e-mailem, digitální podepsání). Jelikož cílem zájmu je webový server, v této kapitole bude rozebrána tvorba PDF v nejpopulárnějších programovacích jazycích pro web. 1.1.1 PHP PHP jednoznačně patří mezi nejpopulárnější jazyky v oblasti malých a středně velkých webových aplikací. K jeho velké popularitě v České republice přispívá zejména široká komunita a dostupnost u webových hostingů. Obvykle je používán s http serverem Apache. FPDF FPDF je knihovna pro tvorbu PDF napsaná jazyce PHP. Jako taková umožňuje tomuto jazyku práci s formátem PDF bez nutnosti volání externích komponent. To může být oceněno hlavně v případě internetových portálů běžících na pronajatém nebo propůjčeném hostingu, kde kromě běhového prostředí není dostupná další podpora. Tomu odpovídá i přístup autorů, kteří nabízejí knihovnu pro volné užití i u komerčních projektů. Protože se dokument vytváří přímo interpretem jazyka a ne externí komponentou, je reprezentován objektem knihovní třídy. Jeho úprava, vkládání nových prvků a i vytvoření jsou řízené voláním metod tohoto objektu. 3

1. ZPŮSOBY TVORBY PDF SOUBORŮ V PROSTŘEDÍ WEBU Pro PHP jako skriptovací jazyk je náročné pracovat s fonty přímo, proto se používá vlastní formát 1 Konkrétní font je omezen kódováním, proto pro podporu více kódování je potřeba mít definovaný zvlášt font pro každé kódování. Řešením v takovém případě může být také projekt TFPDF 2, který má za cíl rozšířit knihovnu FPDF o podporu unicode. Základem pro vkládání textu je metoda MultiCell. Pro text obstarává zalomení nového řádku a rozdělení textu na více stránek, pokud jsou potřebné. Vypočítává také umístění textu na stránce dokumentu vzhledem k předcházejícímu textu. Pro samotné vkládání bloků s textem je pak používána metoda Cell, která přebírá text a souřadnice s absolutní polohou. Pro uživatele může tato metoda mít využití například při tvorbě hlavičky a zápatí. Obrázky se do souboru přidávají jako samostatný plovoucí objekt, nepozicují se tedy podle existujícího textu na stránce, ale při vložení se předávají souřadnice absolutní polohy na aktuální stránce. Tento vztah je oboustranný tj. pokud uživatel chce pod obrázek vložit text pomocí MultiCell musí nejdříve definovat vertikální mezeru od předchozího odstavce. Při tvorbě dokumentu se binární kód obrázku převádí do base64. Podporované formáty obrázků jsou GIF, PNG a JPG. Vhodné nasazení FPDF jako nástroje na generovaní PDF souborů je hlavně na menších webových projektech a freehostingových serverech, kde uživatel nemá kontrolu nad instalovanými komponentami a potřebuje generování souboru za běhu. Podmínkou je běhové prostředí PHP 4.3.10 nebo vyšší. Hlavní výhodou je snadnost použití a šíře podporovaných prvků, mezi nevýhody lze počítat absence snadného způsobu sazby matematických výrazů a mírně zvýšené výpočetní nároky. Způsob práce s knihovnou FPDF dokumentu je dále rozveden na příkladu v příloze A. 1. Pro fonty ve formátu TrueType a Type1 existují konvertory. 2. Dostupné online: http://www.fpdf.org/en/script/script92.php 4

1. ZPŮSOBY TVORBY PDF SOUBORŮ V PROSTŘEDÍ WEBU TCPDF Knihovna TCPDF je dodávána pod licencí GNU LGPL v3. Podobně jako FPDF je dokument reprezentován objektem knihovní třídy a jeho obsah je nastavován voláním metod objektu. Metody jsou obecně propracovanější než v knihovně FPDF. Je zde patrné rozlišení nastavení okrajů, fontů a podobných vlastností pro jednotlivé sekce dokumentu (titulní stranka, nadpisy, záhlaví). Pro generování souborů s fonty z TrueType se používá php skript, přiložený ke zdrojovým souborům knihovny. 1.1.2 Python Python je oblíbený zejména pro svou jednoduchost a přímost. Pro programování webových stránek je používaný zejména u větších projektů. peepdf peepdf je dodáván pod licencí GNU GPL v3. Přísně vzato nejde o knihovnu, ale o nástroj pro manipulaci s PDF, přestože její části mohou být použity jako knihovna. pypdf Knihovna pypdf je dodávána pod upravenou licencí BSD. Knihovna bohužel neumožňuje vytvoření nového pdf pouze manipulaci se stránkami exitujícího. Umožňuje také čtení metadat (tvůrce dokumentu, název apod.). 1.1.3 Java Java na webu je oblíbena zejména u masivních aplikací, kde je velký požadavek na bezpečnost, rychlost a stabilitu (např: bankovní systémy) 5

1. ZPŮSOBY TVORBY PDF SOUBORŮ V PROSTŘEDÍ WEBU PDFBox Apache PDFBox je otevřená knihovna distribuovana pod licencí Apeche 2.0. Poskytuje Javě pokročilé rozhraní pro práci s PDF soubory. 6

A Vytváření dokumentu pomocí FPDF Pro demonstraci poslouží část článku Porovnání T-Mobile MDA II vs. Eurotel Dataphone II 1. Na začátek je nutné vybrat kódování dokumentu, a nadefinovat cestu k souborům s fonty 2. Toho je možné docílit pomocí definování hlavičky a konstantou FPDF_FONTPATH. Při inicializaci objektu dokumentu je také potřeba nastavit fonty, co chceme použít s odkazem na soubor s fontem. Toto se týka použitých řezů. header("content-type","application/pdf; charset=windows-1250"); define("fpdf_fontpath","./font/"); class PDF extends FPDF { function construct() { parent:: construct(); $this->addfont("times-cp1250", "", "times-cp1250.php"); $this->addfont("times-cp1250", "B", "timesb-cp1250.php"); $this->addfont("times-cp1250", "I", "timesi-cp1250.php"); $this->addfont("times-cp1250", "BI", "timesbi-cp1250.php"); } Definovat zápatí je možné vytvořením potomka s definovanou metodou Footer. V zápatí může být například číslo stránky. function Footer() { $this->sety(-15); $this->setfont("times-cp1250","",8); $this->cell(0,10,$this->pageno()."/{nb}",0,0,"c"); } K usnadnění práce je možné definovat další metody pro nejčastěji použité prvky. V článku se dále používá tabulka, číslovaný seznam a odstavce s nadpisem i bez nadpisu. Pro jednoduchost jsou uvedeny pouze hlavičky 3 odpovídajících metod. function Section($text, $title=null) function BasicTable($header,$data) function NumericList($items) 1. Dostupné online: http://www.ce4you.cz/articles/detail.asp?p= 0&a=1 nebo v přiloženém archivu fpdf.zip/art 2. Na adrese http://fpdf.fruit-lab.de/ je možné získat soubory s fontem v požadovaném kódování. Podmínkou je vlastnění původního TrueType fontu jako základ pro konverzi. Pokud je požadovaná podpora více řezů písma je potřeba zkonvertovat i odpovídající varianty fontu. 3. Těla metod je možné nalézt v přiloženém souboru fpdf.zip/index.php 7

ˇ A. V YTVÁ RENÍ DOKUMENTU POMOCÍ FPDF V této fázi je možné zaˇcít se vkládáním vlastního obsahu. Opˇet pro zjednodušení zde bude pouze jednoduchá ukázka ze cˇ lanku s použitím každého prvku ve vzájemném kontextu4. $pdf = new PDF(); $pdf->aliasnbpages(); $pdf->addpage(); $pdf->section("co se vzhledu týká, zde již narazíme na první drobné...", "Vzhled"); $pdf->image("img/img1.jpg",11.4,27,20,0); $pdf->ln(19); $pdf->basictable( array("pocket PC","Rozmˇ ery (mm)","hmotnost (g)"), array( array("eurotel Dataphone II","70 x 130 x 19","185"), array("t-mobile MDA II","70 x 130 x 19","185") ) ); $pdf->numericlist(array( "MDA II má již v ROMce instalován poslední balík oprav a vylepšení...", "Na MDA II je pˇ rímo v ROMce uložena instalace lokalizace, uživatel...", "Kromˇ e standardních aplikací obsahuje MDA II pˇ rímo v ROMce vynikaj..." )); $pdf->output(); Vzhled Co se vzhledu týká, zde již narazíme na první drobné rozdíly, i když z praktického hlediska se jedná skutečně jen o prkotiny. Celé tělo přístroje je v obou případech stříbrné, liší se akorát v části přední strany zařízení barvou a tvarem tlačítek. Hmotnost je také až na nějaký ten gram stejná. Nemá smysl to popisovat slovně, prohlédněte si fotografii. Na jiné rozdíly jsem již nenarazil, samozřejmě pomíjím absenci grafických prvků konkurenční společnosti na každém ze zařízení:) Pocket PC Rozměry (mm) Hmotnost (g) Eurotel Dataphone II T-Mobile MDA II 70 x 130 x 19 70 x 130 x 19 185 185 1. MDA II má již v ROMce instalován poslední balík oprav a vylepšení známý pod názvem AKU1, který opravuje řadu více či méně závažných problémů, zvyšuje stabilitu a funkčnost, snižuje počet běžících procesů (vysvětlení zde) atp. Kdy bude tato oprava dostupná i pro Dataphone II se zatím neví... 2. Na MDA II je přímo v ROMce uloženo nastavení všech služeb T-Mobile, které se automaticky instalují po tvrdém resetu; u Dataphone II je nutné je instalovat ručně z CD (instalace z ROM se teprve přípravuje). 3. Na MDA II je přímo v ROMce uložena instalace lokalizace, uživatel si může vybrat, zda instalovat velkou, malou či žádnou; Dataphone II ji má opět pouze na CD (instalace z ROM se teprve přípravuje). 4. Kromě standardních aplikací obsahuje MDA II přímo v ROMce vynikající aplikaci pro sledování nákladů GPRS spojení Spb GPRS Monitor, prohlížeč prezentací a PDF souborů CueVue Presenter a CueVue PDF Viewer. 1/1 4. Celý dokument i kód, který jej vygeneroval lze nalézt v pˇriloženém archivu fpdf.zip 8

Literatura [1] Manuál FPDF [online]. Dostupné z WWW: <http://fpdf. org/en/doc> [2] TCPDF examples [online]. Dostupné z WWW: <http://www. tcpdf.org/examples.php [3] Document management Portable document format Part 1: PDF 1.7 [online, pdf] last updated: 2008-7-1 [cit. 2011-05-26]. Dostupné z WWW: <http://www.adobe.com/content/dam/ Adobe/en/devnet/pdf/pdfs/PDF32000_2008.pdf> 9