Štatistický modul v systéme rozvrhu FM: Rozdiel medzi revíziami
(4 medziľahlé úpravy od 2 ďalších používateľov nie sú zobrazené) | |||
Riadok 8: | Riadok 8: | ||
|Mechatronika | |Mechatronika | ||
}} | }} | ||
− | + | {{Praca_uvod|1|Štatistický modul v systéme rozvrhu FM|Otvorené formáty dokumentov|Tvorba tlačových zostáv v aplikácii rozvrhu FM TnUAD|||||||||}} | |
{{Abstrakt | {{Abstrakt | ||
|a | |a | ||
|a | |a | ||
}} | }} | ||
− | + | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
'''Úvod''' | '''Úvod''' | ||
Riadok 30: | Riadok 19: | ||
=Otvorené formáty dokumentov= | =Otvorené formáty dokumentov= | ||
+ | Otvorený formát (otvorený štandard, angl.: open format) je publikovaná špecifikácia na uchovávanie digitálnych údajov, obvykle udržiavaná neproprietárnou štandardizačnou organizáciou a bez právnych obmedzení na používanie. Napríklad, otvorený formát musí byť implementovateľný aj proprietárnym aj open source softvérom, za použitia im typických licencií. Na rozdiel od otvorených formátov, proprietárne formáty sa riadia a definujú súkromnými záujmami. Otvorené formáty sú podmonožinou otvorených noriem. [http://sk.wikipedia.org/wiki/Otvoren%C3%BD_form%C3%A1t] | ||
+ | |||
==ODF (OpenDocument Format)== | ==ODF (OpenDocument Format)== | ||
+ | XML formát pre ukladanie kancelárskych dokumentov (textové dokumenty, tabuľky, prezentácie apod.) vytvorený pre kancelársky balík OpenOffice.org. Špecifikácia bola pôvodne vyvinutá firmou Sun, ale štandard bol vyvinutý v rámci OASIS (Organization for the Advancement of Structured Information Standards) a založení na XML formátu vytvorený a implementovaný pre balík OpenOffice.org. Formát je neznárodním štandardom (ISO/IEC 26300) od 30. novembra 2006. | ||
+ | Formát je podporovaný hlavne v balíku aplikácií OpenOffice.org, KOffice a StarOffice. Pre MS Office existuje konvertor. [http://www.abclinuxu.cz/clanky/rozhovory/rozhovor-jiri-kosek-o-ooxml-odf-a-formatech-obecne [2<nowiki>]</nowiki> ] | ||
+ | |||
==OOXML (Office Open XML)== | ==OOXML (Office Open XML)== | ||
+ | Takisto XML formát pre ukladanie kancelárskych dokumentov (textové dokumenty, tabuľky, prezentácie apod.) od firmy Microsoft. Formát je podporovaný v nových verziách sady aplikácií MS Office (2007, pre staršie verzie je k dispozícii konvertor) a tiež prevodným modulom pre OpenOffice.org od firmy Novell (funguje však len vo verziách OpenOffice.org v SUSE Linuxu a niektorých verziách (K)Ubuntu). Podporuje ho napríklad také NeoOffice, čo je ekvivalentom OpenOffice.org pre Mac OS X. [http://www.abclinuxu.cz/clanky/rozhovory/rozhovor-jiri-kosek-o-ooxml-odf-a-formatech-obecne] | ||
==OpenOffice.org== | ==OpenOffice.org== | ||
+ | Je kancelársky balíček ktorý obsahuje: | ||
+ | *Textový editor Writer | ||
+ | *Tabuľkový procesor Calc | ||
+ | *Prezentační program Impress | ||
+ | *Nástroj pre kreslení Draw | ||
+ | *Databázový nástroj Base | ||
+ | je voľne šíriteľný slobodný softvér pod licenciou LGPL. Je funkčný pod akoukoľvek platformou operačného systému. A dokáže konkurovať kancelárskemu balíku od Microsoftu – MS Office. | ||
+ | |||
==Portable Document Format== | ==Portable Document Format== | ||
+ | PDF (Portable Document Format) alebo prenosný formát dokumentu vyvinutý firmou Adobe. Súbor formátu PDF je možné vytvoriť viacerými spôsobmi. Napríklad pomocou aplikácií určených len na tento účel: PDF Creator, BullZip PDF Printer. Ďalším spôsobom je priame napísanie kódu PDF, ale táto metóda je v praxi nepoužiteľná kvôli svojej náročnosti. Posledný spôsob, ktorý spomeniem, je generovanie PDF dokumentov pomocou web aplikácií. Tento spôsob budem ďalej demonštrovať v kapitole Tvorba tlačových zostáv v aplikácii rozvrhu FM TnUAD. K zobrazovaniu PDF dokumentov sú nutné špeciálne prehliadače. Jedným s najznámejších je Adobe Acrobat Reader. Je voľne dostupný na www.adobe.com. Najväčšou výhodou PDF formátu je jeho nezávislosť na platforme (PC, Mac, UNIX). Čo zaručí, že sa zobrazí rovnako na všetkých tipoch počítačov. Je to veľká výhoda oproti ostatným formátom, ktoré zobrazujú dokument inak na rôznych platformách. Ďalšou výhodou PDF formátu je možnosť definovať náhľad stránok, odkazy alebo záložky, čo umožňuje užívateľovi komfortnejšie prezeranie dokumentu. | ||
+ | PDF súbory sa ukladajú vo formáte 7-bit ASCII alebo ako binárny súbor. Pri posielaní PDF súborov cez e-mail niekedy dochádza k ich poškodeniu. Kvôli tomu sa odporúča ukladať súbory ako binárne. | ||
+ | |||
===Verzie PDF=== | ===Verzie PDF=== | ||
+ | '''PDF 1.0'''<br/> | ||
+ | V tejto verzii bolo povolené len kódovanie v 7-bit ASCII. Čiže aj binárne údaje sa museli kódovať do 7-bit ASCII. Riadok dokumentu nemohol obsahovať viac ako 255 znakov. Koniec riadku je definovaný znakmi <0D0A>. | ||
+ | <br/>'''PDF 1.1'''<br/> | ||
+ | Táto verzia vznikla v roku 1993. | ||
+ | Časom sa ukázalo, že kódovanie do 7-bit ASCII nie je najlepším riešením. Preto je už vo verzii PDF 1.1 povolené binárne kódovanie. Hlavnými dôvodmi, prečo boli nútení upustiť z tohto pravidla, sú: | ||
+ | * Zmena/poškodenie súborov pri prenose. | ||
+ | * Zväčšenie dokumentu aj o 20% pri kódovaní údajov s binárneho do ASCII kódovania. | ||
+ | Binárne údaje sa začali používať priamo v objektoch string, stream a aj v komentároch. Čo sa v praxi osvedčilo. | ||
+ | Ďalšie zmeny, ktoré boli uplatnené v PDF 1.1: | ||
+ | * Novou verziou pribudla možnosť ochrany dokumentu pomocou hesla. | ||
+ | * Ďalšou zmenou bolo zrušenie obmedzenia maximálneho počtu znakov v jednom riadku. | ||
+ | * Možnosť poskytovať ďalšie informácie o dokumente. | ||
+ | * Nový formát dátumu, ktorý umožňoval programové porovnávanie dátumov. | ||
+ | Štruktúra PDF 1.1 sa oproti PDF 1.0 nezmenila. | ||
+ | <br/>'''PDF 1.2'''<br/> | ||
+ | Verzia PDF 1.2 vznikla v roku 1996. | ||
+ | Niektoré zmeny, ktoré boli uplatnené v PDF 1.2: | ||
+ | * Interaktívne prvky ako prepínače a zaškrtávacie políčka. | ||
+ | * Podpora pre prehrávanie filmov (z externých súborov) a zvukov (buď priamo zo súboru PDF, alebo z externých súborov). | ||
+ | * Podpora pre čínske, kórejské, japonské texty. | ||
+ | |||
===Formát dokumentu PDF=== | ===Formát dokumentu PDF=== | ||
+ | Štruktúra formátu sa skladá z nasledujúcich štyroch častí: | ||
+ | * Popis objektov dokumentu | ||
+ | * Popis štruktúry PDF súboru | ||
+ | * Popis štruktúry dokumentu | ||
+ | * Popis stránky | ||
+ | Súradnicový systém PDF formátu definuje plochu, na ktorú sa vykresľujú objekty. Určuje pozíciu, orientáciu a veľkosť objektu. Každé zariadenie, na ktorom je možné zobraziť PDF dokument, má svoj vlastný súradnicový systém, ktorý nám určuje plochu zariadenia – device space, na ktorom je vykreslený dokument. | ||
+ | Zobrazovaný PDF súbor nie je závislý na výstupnom zariadení. Preto používa svoj vlastný súradnicový systém – user space. Pri zobrazovaní PDF dokumentu na výstupné zariadenie sú súradnice a rozmery objektov konvertované z user space do device space. K tomu sa využíva transformačná matica CTM (Current Transformation Matrix). | ||
+ | Štandardné zobrazovanie user space používa rozlíšenie 72 jednotiek (points) na palec. Kladný smer osi Y je orientovaný nahor a kladný smer osi X vpravo. | ||
+ | Text space- je to oblasť kam je zobrazovaný text. Character space definuje jednotlivé znaky fontu. Transformáciu s character space do text space je určená maticou character matrix. | ||
+ | Obrázky sú zobrazované v oblasti image space. Transformáciu z image space do user space je preddefinovaná a nedá sa zmeniť. <br/>'''Transformácia súradníc'''<br/> | ||
+ | V transformačnej matici je popísané zväčšenie, rotácia a posunutie objektov. Každá matica v PDF obsahuje šesť hodnôt. | ||
+ | * Posunutie je definované [0,0,0,0,x,y], kde x,y sú súradnice určujúce vector posunutia | ||
+ | * Pre zväčšenie objektu je matica nasledovná [x,0,0,y,0,0], kde x,y udávajú novú veľkosť jednotiek | ||
+ | * Rotácia objektu [cos(theta), sin(theta), -sin(theta), cos(theta), 0, 0] je daná uhlom theta v protismere hodinových ručičiek | ||
+ | * Zošikmenie je definované maticou [1, tg(alpha), tg(beta), 1, 0, 0] os x je zošikmená o uhol alpha a os y o uhol beta. | ||
+ | Pokiaľ je použitých viac transformácií za sebou, tak nová transformácia je vykonaná v súradnicovom systéme z predošlej transformácie. | ||
+ | |||
====Popis objektov dokumentu==== | ====Popis objektov dokumentu==== | ||
+ | Objekty podporované PDF sú podobné objektom PostScriptu. Sedem základných typov objektov, ktoré PDF využíva sú: boolean, number, string, name, array, dictionary, stream a null (prázdny). Každý objekt môže byť pomenovaný, to nám potom umožňuje odkazovať sa naň z iných objektov. Pomenovaný objekt sa nazýva indirect object. V názvoch objektov sú rozlišované veľké a malé písmená. | ||
+ | <br/>'''Boolean'''<br/> Obsahuje len hodnoty TRUE (pravda) a FALSE (nepravda) | ||
+ | <br/>'''Number '''<br/> Sú povolené len celé a desatinné čísla. Desatinné číslo musí obsahovať desatinnú čiarku. Iný spôsob zápisu nie je možný! | ||
+ | <br/>'''String'''<br/> | ||
+ | String (reťazec) je to n-tica prvkov danej množiny uzavretá v guľatých zátvorkách. Pokiaľ by reťazec svojou dĺžkou presahoval dĺžku riadku, je možné reťazec zalomiť spätným lomítkom ( \ ). Spätné lomítko nám slúži aj na výpis akéhokoľvek netlačitetelného znaku ecsape sekvencie v ASCII tabuľkách napr.: \), v tomto prípade nám zátvorka neukončuje reťazec, ale je súčasťou reťazca a bude vypísaná. | ||
+ | {| cellpadding="5" cellspacing="0" border="1" class="prettytable" | ||
+ | !Zápis | ||
+ | !Význam | ||
+ | |- | ||
+ | |\n | ||
+ | |koniec riadku | ||
+ | |- | ||
+ | |\r | ||
+ | |návrat na začiatok riadku | ||
+ | |- | ||
+ | |\t | ||
+ | |tabulátor | ||
+ | |- | ||
+ | |\b | ||
+ | |backspace | ||
+ | |- | ||
+ | |\f | ||
+ | |Form feed | ||
+ | |- | ||
+ | |\\ | ||
+ | |spätné lomítko | ||
+ | |- | ||
+ | |\( | ||
+ | |začiatok guľatej zátvorky | ||
+ | |- | ||
+ | |\) | ||
+ | |koniec guľatej zátvorky | ||
+ | |- | ||
+ | |} | ||
+ | String je možné zapísať aj v hexadecimálnom tvare napr.: <6cd3>, je to reťazec obsahujúci dva hexadecimálne znaky z tabuľky ASCII a to 6c, d3. Všimnite si, že reťazce v tomto tvare nie sú v guľatých zátvorkách, ale v zobákových < > . | ||
+ | <br/>Príklad:<br/> | ||
+ | (toto je reťazec na jeden riadok) | ||
+ | (toto je reťazec \ | ||
+ | zalomený \ | ||
+ | na viac riadkov) | ||
+ | |||
+ | <br/>'''Name'''<br/> | ||
+ | Name (meno)- je to n-tica prvkov danej množiny začínajúca lomítkom ( / ). Však na rozdiel od reťazca, má povolené len znaky, ktoré sa nachádzajú v ASCII tabuľke medzi hodnotami <21> <7e>, okrem %, (, ), <, >, [, ], {, }, / a #. | ||
+ | <br/>Príklad:<br/> | ||
+ | /Meno | ||
+ | /Ďalšie_meno | ||
+ | |||
+ | Od verzie PDF 1.2 môže meno obsahovať hexadecimálne hodnoty (okrem <00>), pred ktoré je umiestnený znak mriežky #. | ||
+ | <br/>Príklad:<br/> | ||
+ | /tretie#20meno | ||
+ | <br/>'''Array'''<br/> | ||
+ | Array (pole)- je to sekvencia PDF objektov. Môže obsahovať viac objektov rôzneho typu. Pole je uzatvorené v zátvorkách [ ], v ktorých sa nachádza výpis objektov pola. | ||
+ | <br/>Príklad:<br/> | ||
+ | [false (reťazec) /meno 432 (reťazec2)] | ||
+ | |||
+ | <br/>'''Dictionary'''<br/> | ||
+ | Dictionary (slovník) obsahuje tabuľku spárovaných objektov. Prvý objekt musí byť objekt typu name a nazýva sa key. Druhý objekt sa nazýva value a môže obsahovať akýkoľvek typ objektu dokonca aj dictionary. | ||
+ | Dictionary je uzavretý do dvojitých zobákových zátvoriek << >>, v ktorých sú dvojice key-value. | ||
+ | <br/>Syntax:<br/> | ||
+ | << /kľúč hodnota /key value /key1 34 >> | ||
+ | <br/>Príklad dictionary obsahujúci ďalší objekt typu dictionary:<br/> | ||
+ | << | ||
+ | /objednávka 0244003 | ||
+ | /počet 2 | ||
+ | /info | ||
+ | <</typ (meno produktu) | ||
+ | /farba (čierna) >> | ||
+ | >> | ||
+ | <br/>'''Stream'''<br/> | ||
+ | Stream (prúd) je totožný s objektom string, až na rozdiel prístupu k objektom. Nakoľko string sa číta celý naraz, ku streamu sa pristupuje po častiach. Preto sa objekt stream využíva na zapisovanie veľkého množstva údajov. Ako napríklad u obrázkov, kde je potrebné definovať viac parametrov pre správne zobrazenie. | ||
+ | <br/>Syntax:<br/> | ||
+ | <stream>::= <dictionary> | ||
+ | stream | ||
+ | {<riadok znakov>}* | ||
+ | endstream | ||
+ | |||
+ | <br/>Príklad:<br/> | ||
+ | << /Length 41 >> | ||
+ | stream | ||
+ | [/pole (v) (streame) 45] | ||
+ | /object#20name | ||
+ | (obyčajný reťazec) | ||
+ | endstream | ||
+ | |||
+ | Všetky stream objekty musia byť pomenované (indirect object). Dictionary objekty nemôžu byť pomenované (direct object). | ||
+ | <br/>Stream atribúty<br/> | ||
+ | Uvediem niekoľko atribútov objektu stream v tvare : kľúč (typ) opis atribútu. | ||
+ | <br/>Length (celočíselná hodnota) počet znakov, ktoré sa nachádzajú medzi identifikátormi stream a endstream. Atribút length je povinný. | ||
+ | <br/>Filter (meno alebo pole mien) nám poskytuje informácie o filtroch, ktoré majú byť použité pri čítaní streamu. Napr.: údaje kódované pomocou filtra LZW a potom ASCII base-85 sú dekódované filtrom: | ||
+ | /Filter [/ASCII85Decode /LZWDecode] | ||
+ | <br/>FFilter (meno alebo pole mien) definuje filter, ktorý sa použije na dekódovanie znakov z externého súboru. | ||
+ | <br/>'''Indirect object'''<br/> | ||
+ | Indirect object (nepriami objekt). Každý objekt môže byť pomenovaný. Takýto objekt sa skladá z : identifikátoru objektu, priameho kľúča a identifikátora endobj. Identifikátor objektu sa skladá z object number (číslo objektu), generation number (generačného čísla) a kľúčového slova obj. | ||
+ | <br/>Syntax:<br/> | ||
+ | <indirect object> ::= <object ID> | ||
+ | <direct object> | ||
+ | endobj | ||
+ | <object ID> ::= <object number> | ||
+ | <generation number> | ||
+ | obj | ||
+ | Číslo objektu a generačné číslo objektu jednoznačne definuje nepriami objekt v dokumente. | ||
+ | <br/>'''Odkazy na objekty'''<br/> | ||
+ | Každý objekt ako je prvok poľa alebo hodnota v slovníku, môže byť definovaný priamo alebo pomocou nepriameho odkazu na objekt (indirect reference). Indirect reference sa skladá z čísla objektu (objec number), generačného čísla (generation number) a kľúčového slova R. | ||
+ | <br/>Syntax:<br/> | ||
+ | <indirect reference>::= | ||
+ | <object number> | ||
+ | <generation number> | ||
+ | R | ||
+ | |||
====Popis štruktúry PDF súboru==== | ====Popis štruktúry PDF súboru==== | ||
+ | Základná štruktúra PDF súboru sa skladá z hlavičky head, ktorá obsahuje len jeden riadok, tela body, tabuľka krížových odkazov cross-reference table a päty trailer. | ||
+ | <PDF file>::= | ||
+ | <header> | ||
+ | <body> | ||
+ | <cross-reference table> | ||
+ | <trailer> | ||
+ | <br/>'''Hlavička'''<br/> | ||
+ | Hlavička sa nachádza len na prvom riadku PDF súboru. Začína znakom percento (%). Poskytuje informácie o použitej verzii. Keby sme chceli vytvoriť PDF súbor vo verzii PDF 1.1, hlavička by vyzerala takto: | ||
+ | <br/>Príklad: | ||
+ | %PDF-1.1 | ||
+ | <br/>'''Telo'''<br/> | ||
+ | Telo obsahuje postupnosť nepriamych objektov (fonty, stránky, obrázky...) reprezentujúcich dokument. Tieto objekty sú zo základných typov opisovaných v kapitole 4. | ||
+ | <br/>'''Komentáre'''<br/> | ||
+ | Komentáre sa môžu nachádzať len v tele PDF súboru. Komentáre sa začínajú znakom percento (%) a končia sa na konci riadku. Môžu začínať na hociktorej pozícii riadku. | ||
+ | Pokiaľ sa znak percento (%) nachádza v objekte stream alebo string, nie je považovaný za začiatok komentára. | ||
+ | <br/>Príklad:<br/> | ||
+ | %Toto bude v tele dokumentu považované za komentár | ||
+ | (toto je reťazec STRING % pokračovanie reťazca) | ||
+ | (aj toto je reťazec) % toto je už komentár | ||
+ | |||
+ | <br/>'''Tabuľka krížových odkazov'''<br/> | ||
+ | Každý PDF súbor obsahuje práve jednu tabuľku krížových odkazov. V nej sú popísané prístupy ku všetkým nepriamym objektom súboru. Každý takýto prístup je definovaný práve v jednom riadku tabuľky. | ||
+ | Tabuľka krížových odkazov sa rozdeľuje na sekcie. Novovytvorený PDF súbor obsahuje len jednu sekciu. Po každej úprave súboru sa počet sekcií zvýši o jednu. Sekcie sú usporiadané do jednej sekcie ako podsekcie, subsection. | ||
+ | Syntax pre tabuľku krížových odkazov je presne definovaná. Začína kľúčovým slovom xref a za ním nasledujú podsekcie. | ||
+ | <br/>Syntax:<br/> | ||
+ | <cross-reference section>:== | ||
+ | xref | ||
+ | <cross-reference subsection>+ | ||
+ | |||
+ | Syntax pre podsekcie je nasledovná. Na začiatku každej podsekcie sú uvedené dva parametre. Tým prvým je číslo prvého objektu v podsekcii, druhý parameter obsahuje počet objektov, ktoré sa v podsekcii nachádzajú. | ||
+ | |||
+ | <br/>Syntax:<br/> | ||
+ | <cross-reference subsection>:== | ||
+ | <číslo prvého objektu podsekcie> | ||
+ | <počet objektov v podsekcii> | ||
+ | <cross-reference entry>+ | ||
+ | Príklad sekcie tabuľky krížových odkazov s jednoduchou podsekciou: | ||
+ | xref | ||
+ | 0 6 | ||
+ | 0000000003 65535 f | ||
+ | 0000000017 00000 n | ||
+ | 0000000081 00000 n | ||
+ | 0000000000 00007 f | ||
+ | 0000000331 00000 n | ||
+ | 0000000409 00000 n | ||
+ | Príklad sekcie tabuľky krížových odkazov so štyrmi podsekciami: | ||
+ | xref | ||
+ | 0 1 | ||
+ | 0000000000 65535 f | ||
+ | 3 1 | ||
+ | 0000025325 00000 n | ||
+ | 23 2 | ||
+ | 0000025518 00002 n | ||
+ | 0000025635 00000 n | ||
+ | 30 1 | ||
+ | 0000025777 00000 n | ||
+ | |||
+ | <br/>'''Päta'''<br/> | ||
+ | Päta - trailer je posledná časť súboru PDF. Slúži k rýchlemu nalezeniu tabuľky krížových odkazov a niektorých dôležitých objektov v dokumente. | ||
+ | <br/>Platí, že aplikácia by mala čítať PDF súbor od jeho konca. Posledný riadok PDF súboru obsahuje značku konca súboru: %%EOF. Dva predchádzajúce riadky obsahujú postupné kľúčové slová startxref a offset bytu od začiatku súboru ku kľúčovému slovu xref z poslednej sekcie tabuľky krížových odkazov v dokumente. | ||
+ | <br/>Pred týmito riadkami je umiestnený trailer dictionary. Ten obsahuje kľúčové slovo trailer nasledované dvojicami kľúč - hodnota: | ||
+ | <br/>Syntax:<br/> | ||
+ | <trailer> ::= trailer | ||
+ | << | ||
+ | <trailer key-value pair>+ | ||
+ | >> | ||
+ | |||
+ | Prehľad hodnôt v trailer-dictionary | ||
+ | * Size (povinné)<br/> | ||
+ | Celkový počet záznamov v tabuľke krížových odkazov. Počet zahŕňa všetky záznamy v dokumente - teda zo všetkých sekcií tabuľky. | ||
+ | * Prev (len u súboru s viacerými sekciami tabuľky krížových odkazov)<br/> | ||
+ | Offset bytu od začiatku súboru k predchádzajúcej sekcii tabuľky. | ||
+ | * Root (povinné, nepriamy odkaz)<br/> | ||
+ | Odkaz na objekt katalóg. | ||
+ | * Info (nepovinné, nepriamy odkaz)<br/> | ||
+ | Odkaz na informácie o dokumente. | ||
+ | * ID (povinné)<br/> | ||
+ | Pole dvoch objektov string. Touto dvojicou je určená verzia dokumentu. Prvý string je založený pri vytvorení dokumentu, druhý je zmenený pri každej modifikácii dokumentu. | ||
+ | * Encrypt (nepovinné)<br/> | ||
+ | Pokiaľ je dokument zašifrovaný, obsahuje informácie pre jeho dešifrovanie. |
Aktuálna revízia z 13:20, 24. február 2010
![]() |
Trenčianska Univerzita Alexandra Dubčeka v Trenčíne
Fakulta Mechatroniky |
![]() |
Autor: | Dávid Ďurika |
Pedagogický vedúci: | Ing. Juraj Ďuďák |
Študijný odbor: | Mechatronika
|
Akademický rok |
2009/2010
|
Abstrakt
a |
Abstract
a |
Úvod
V dnešnej dobe je mnoho formátov súborov. Niektoré sú voľne šíriteľné na iné sú chránené rôznymi licenciami. Súčasnosti je trend vytvárať a používať otvorené formáty súborov. Otvorený formát je taký ktorého špecifikácia je verejne prístupná. Medzi otvorené formáty dokumentov patria: PDF, OO XML, ODT. Medzi otvorené grafické formáty môžeme zaradiť napríklad gif, png, svg. V tejto práci sa bude opísaná štruktúra PDF formátu a niektoré vlastnosti tohto formátu. Vdruhej časti práce budú opísané tlačové zostavy použité v aplikácii rozvrhu FM TnUAD.
Obsah
Otvorené formáty dokumentov
Otvorený formát (otvorený štandard, angl.: open format) je publikovaná špecifikácia na uchovávanie digitálnych údajov, obvykle udržiavaná neproprietárnou štandardizačnou organizáciou a bez právnych obmedzení na používanie. Napríklad, otvorený formát musí byť implementovateľný aj proprietárnym aj open source softvérom, za použitia im typických licencií. Na rozdiel od otvorených formátov, proprietárne formáty sa riadia a definujú súkromnými záujmami. Otvorené formáty sú podmonožinou otvorených noriem. [1]
ODF (OpenDocument Format)
XML formát pre ukladanie kancelárskych dokumentov (textové dokumenty, tabuľky, prezentácie apod.) vytvorený pre kancelársky balík OpenOffice.org. Špecifikácia bola pôvodne vyvinutá firmou Sun, ale štandard bol vyvinutý v rámci OASIS (Organization for the Advancement of Structured Information Standards) a založení na XML formátu vytvorený a implementovaný pre balík OpenOffice.org. Formát je neznárodním štandardom (ISO/IEC 26300) od 30. novembra 2006. Formát je podporovaný hlavne v balíku aplikácií OpenOffice.org, KOffice a StarOffice. Pre MS Office existuje konvertor. [2]
OOXML (Office Open XML)
Takisto XML formát pre ukladanie kancelárskych dokumentov (textové dokumenty, tabuľky, prezentácie apod.) od firmy Microsoft. Formát je podporovaný v nových verziách sady aplikácií MS Office (2007, pre staršie verzie je k dispozícii konvertor) a tiež prevodným modulom pre OpenOffice.org od firmy Novell (funguje však len vo verziách OpenOffice.org v SUSE Linuxu a niektorých verziách (K)Ubuntu). Podporuje ho napríklad také NeoOffice, čo je ekvivalentom OpenOffice.org pre Mac OS X. [2]
OpenOffice.org
Je kancelársky balíček ktorý obsahuje:
- Textový editor Writer
- Tabuľkový procesor Calc
- Prezentační program Impress
- Nástroj pre kreslení Draw
- Databázový nástroj Base
je voľne šíriteľný slobodný softvér pod licenciou LGPL. Je funkčný pod akoukoľvek platformou operačného systému. A dokáže konkurovať kancelárskemu balíku od Microsoftu – MS Office.
Portable Document Format
PDF (Portable Document Format) alebo prenosný formát dokumentu vyvinutý firmou Adobe. Súbor formátu PDF je možné vytvoriť viacerými spôsobmi. Napríklad pomocou aplikácií určených len na tento účel: PDF Creator, BullZip PDF Printer. Ďalším spôsobom je priame napísanie kódu PDF, ale táto metóda je v praxi nepoužiteľná kvôli svojej náročnosti. Posledný spôsob, ktorý spomeniem, je generovanie PDF dokumentov pomocou web aplikácií. Tento spôsob budem ďalej demonštrovať v kapitole Tvorba tlačových zostáv v aplikácii rozvrhu FM TnUAD. K zobrazovaniu PDF dokumentov sú nutné špeciálne prehliadače. Jedným s najznámejších je Adobe Acrobat Reader. Je voľne dostupný na www.adobe.com. Najväčšou výhodou PDF formátu je jeho nezávislosť na platforme (PC, Mac, UNIX). Čo zaručí, že sa zobrazí rovnako na všetkých tipoch počítačov. Je to veľká výhoda oproti ostatným formátom, ktoré zobrazujú dokument inak na rôznych platformách. Ďalšou výhodou PDF formátu je možnosť definovať náhľad stránok, odkazy alebo záložky, čo umožňuje užívateľovi komfortnejšie prezeranie dokumentu. PDF súbory sa ukladajú vo formáte 7-bit ASCII alebo ako binárny súbor. Pri posielaní PDF súborov cez e-mail niekedy dochádza k ich poškodeniu. Kvôli tomu sa odporúča ukladať súbory ako binárne.
Verzie PDF
PDF 1.0
V tejto verzii bolo povolené len kódovanie v 7-bit ASCII. Čiže aj binárne údaje sa museli kódovať do 7-bit ASCII. Riadok dokumentu nemohol obsahovať viac ako 255 znakov. Koniec riadku je definovaný znakmi <0D0A>.
PDF 1.1
Táto verzia vznikla v roku 1993.
Časom sa ukázalo, že kódovanie do 7-bit ASCII nie je najlepším riešením. Preto je už vo verzii PDF 1.1 povolené binárne kódovanie. Hlavnými dôvodmi, prečo boli nútení upustiť z tohto pravidla, sú:
- Zmena/poškodenie súborov pri prenose.
- Zväčšenie dokumentu aj o 20% pri kódovaní údajov s binárneho do ASCII kódovania.
Binárne údaje sa začali používať priamo v objektoch string, stream a aj v komentároch. Čo sa v praxi osvedčilo. Ďalšie zmeny, ktoré boli uplatnené v PDF 1.1:
- Novou verziou pribudla možnosť ochrany dokumentu pomocou hesla.
- Ďalšou zmenou bolo zrušenie obmedzenia maximálneho počtu znakov v jednom riadku.
- Možnosť poskytovať ďalšie informácie o dokumente.
- Nový formát dátumu, ktorý umožňoval programové porovnávanie dátumov.
Štruktúra PDF 1.1 sa oproti PDF 1.0 nezmenila.
PDF 1.2
Verzia PDF 1.2 vznikla v roku 1996.
Niektoré zmeny, ktoré boli uplatnené v PDF 1.2:
- Interaktívne prvky ako prepínače a zaškrtávacie políčka.
- Podpora pre prehrávanie filmov (z externých súborov) a zvukov (buď priamo zo súboru PDF, alebo z externých súborov).
- Podpora pre čínske, kórejské, japonské texty.
Formát dokumentu PDF
Štruktúra formátu sa skladá z nasledujúcich štyroch častí:
- Popis objektov dokumentu
- Popis štruktúry PDF súboru
- Popis štruktúry dokumentu
- Popis stránky
Súradnicový systém PDF formátu definuje plochu, na ktorú sa vykresľujú objekty. Určuje pozíciu, orientáciu a veľkosť objektu. Každé zariadenie, na ktorom je možné zobraziť PDF dokument, má svoj vlastný súradnicový systém, ktorý nám určuje plochu zariadenia – device space, na ktorom je vykreslený dokument.
Zobrazovaný PDF súbor nie je závislý na výstupnom zariadení. Preto používa svoj vlastný súradnicový systém – user space. Pri zobrazovaní PDF dokumentu na výstupné zariadenie sú súradnice a rozmery objektov konvertované z user space do device space. K tomu sa využíva transformačná matica CTM (Current Transformation Matrix).
Štandardné zobrazovanie user space používa rozlíšenie 72 jednotiek (points) na palec. Kladný smer osi Y je orientovaný nahor a kladný smer osi X vpravo.
Text space- je to oblasť kam je zobrazovaný text. Character space definuje jednotlivé znaky fontu. Transformáciu s character space do text space je určená maticou character matrix.
Obrázky sú zobrazované v oblasti image space. Transformáciu z image space do user space je preddefinovaná a nedá sa zmeniť.
Transformácia súradníc
V transformačnej matici je popísané zväčšenie, rotácia a posunutie objektov. Každá matica v PDF obsahuje šesť hodnôt.
- Posunutie je definované [0,0,0,0,x,y], kde x,y sú súradnice určujúce vector posunutia
- Pre zväčšenie objektu je matica nasledovná [x,0,0,y,0,0], kde x,y udávajú novú veľkosť jednotiek
- Rotácia objektu [cos(theta), sin(theta), -sin(theta), cos(theta), 0, 0] je daná uhlom theta v protismere hodinových ručičiek
- Zošikmenie je definované maticou [1, tg(alpha), tg(beta), 1, 0, 0] os x je zošikmená o uhol alpha a os y o uhol beta.
Pokiaľ je použitých viac transformácií za sebou, tak nová transformácia je vykonaná v súradnicovom systéme z predošlej transformácie.
Popis objektov dokumentu
Objekty podporované PDF sú podobné objektom PostScriptu. Sedem základných typov objektov, ktoré PDF využíva sú: boolean, number, string, name, array, dictionary, stream a null (prázdny). Každý objekt môže byť pomenovaný, to nám potom umožňuje odkazovať sa naň z iných objektov. Pomenovaný objekt sa nazýva indirect object. V názvoch objektov sú rozlišované veľké a malé písmená.
Boolean
Obsahuje len hodnoty TRUE (pravda) a FALSE (nepravda)
Number
Sú povolené len celé a desatinné čísla. Desatinné číslo musí obsahovať desatinnú čiarku. Iný spôsob zápisu nie je možný!
String
String (reťazec) je to n-tica prvkov danej množiny uzavretá v guľatých zátvorkách. Pokiaľ by reťazec svojou dĺžkou presahoval dĺžku riadku, je možné reťazec zalomiť spätným lomítkom ( \ ). Spätné lomítko nám slúži aj na výpis akéhokoľvek netlačitetelného znaku ecsape sekvencie v ASCII tabuľkách napr.: \), v tomto prípade nám zátvorka neukončuje reťazec, ale je súčasťou reťazca a bude vypísaná.
Zápis | Význam |
---|---|
\n | koniec riadku |
\r | návrat na začiatok riadku |
\t | tabulátor |
\b | backspace |
\f | Form feed |
\\ | spätné lomítko |
\( | začiatok guľatej zátvorky |
\) | koniec guľatej zátvorky |
String je možné zapísať aj v hexadecimálnom tvare napr.: <6cd3>, je to reťazec obsahujúci dva hexadecimálne znaky z tabuľky ASCII a to 6c, d3. Všimnite si, že reťazce v tomto tvare nie sú v guľatých zátvorkách, ale v zobákových < > .
Príklad:
(toto je reťazec na jeden riadok) (toto je reťazec \ zalomený \ na viac riadkov)
Name
Name (meno)- je to n-tica prvkov danej množiny začínajúca lomítkom ( / ). Však na rozdiel od reťazca, má povolené len znaky, ktoré sa nachádzajú v ASCII tabuľke medzi hodnotami <21> <7e>, okrem %, (, ), <, >, [, ], {, }, / a #.
Príklad:
/Meno /Ďalšie_meno
Od verzie PDF 1.2 môže meno obsahovať hexadecimálne hodnoty (okrem <00>), pred ktoré je umiestnený znak mriežky #.
Príklad:
/tretie#20meno
Array
Array (pole)- je to sekvencia PDF objektov. Môže obsahovať viac objektov rôzneho typu. Pole je uzatvorené v zátvorkách [ ], v ktorých sa nachádza výpis objektov pola.
Príklad:
[false (reťazec) /meno 432 (reťazec2)]
Dictionary
Dictionary (slovník) obsahuje tabuľku spárovaných objektov. Prvý objekt musí byť objekt typu name a nazýva sa key. Druhý objekt sa nazýva value a môže obsahovať akýkoľvek typ objektu dokonca aj dictionary.
Dictionary je uzavretý do dvojitých zobákových zátvoriek << >>, v ktorých sú dvojice key-value.
Syntax:
<< /kľúč hodnota /key value /key1 34 >>
Príklad dictionary obsahujúci ďalší objekt typu dictionary:
<< /objednávka 0244003 /počet 2 /info <</typ (meno produktu) /farba (čierna) >> >>
Stream
Stream (prúd) je totožný s objektom string, až na rozdiel prístupu k objektom. Nakoľko string sa číta celý naraz, ku streamu sa pristupuje po častiach. Preto sa objekt stream využíva na zapisovanie veľkého množstva údajov. Ako napríklad u obrázkov, kde je potrebné definovať viac parametrov pre správne zobrazenie.
Syntax:
<stream>::= <dictionary> stream {<riadok znakov>}* endstream
Príklad:
<< /Length 41 >> stream [/pole (v) (streame) 45] /object#20name (obyčajný reťazec) endstream
Všetky stream objekty musia byť pomenované (indirect object). Dictionary objekty nemôžu byť pomenované (direct object).
Stream atribúty
Uvediem niekoľko atribútov objektu stream v tvare : kľúč (typ) opis atribútu.
Length (celočíselná hodnota) počet znakov, ktoré sa nachádzajú medzi identifikátormi stream a endstream. Atribút length je povinný.
Filter (meno alebo pole mien) nám poskytuje informácie o filtroch, ktoré majú byť použité pri čítaní streamu. Napr.: údaje kódované pomocou filtra LZW a potom ASCII base-85 sú dekódované filtrom:
/Filter [/ASCII85Decode /LZWDecode]
FFilter (meno alebo pole mien) definuje filter, ktorý sa použije na dekódovanie znakov z externého súboru.
Indirect object
Indirect object (nepriami objekt). Každý objekt môže byť pomenovaný. Takýto objekt sa skladá z : identifikátoru objektu, priameho kľúča a identifikátora endobj. Identifikátor objektu sa skladá z object number (číslo objektu), generation number (generačného čísla) a kľúčového slova obj.
Syntax:
<indirect object> ::= <object ID> <direct object> endobj <object ID> ::= <object number> <generation number> obj
Číslo objektu a generačné číslo objektu jednoznačne definuje nepriami objekt v dokumente.
Odkazy na objekty
Každý objekt ako je prvok poľa alebo hodnota v slovníku, môže byť definovaný priamo alebo pomocou nepriameho odkazu na objekt (indirect reference). Indirect reference sa skladá z čísla objektu (objec number), generačného čísla (generation number) a kľúčového slova R.
Syntax:
<indirect reference>::= <object number> <generation number> R
Popis štruktúry PDF súboru
Základná štruktúra PDF súboru sa skladá z hlavičky head, ktorá obsahuje len jeden riadok, tela body, tabuľka krížových odkazov cross-reference table a päty trailer.
<PDF file>::= <header> <body> <cross-reference table> <trailer>
Hlavička
Hlavička sa nachádza len na prvom riadku PDF súboru. Začína znakom percento (%). Poskytuje informácie o použitej verzii. Keby sme chceli vytvoriť PDF súbor vo verzii PDF 1.1, hlavička by vyzerala takto:
Príklad:
%PDF-1.1
Telo
Telo obsahuje postupnosť nepriamych objektov (fonty, stránky, obrázky...) reprezentujúcich dokument. Tieto objekty sú zo základných typov opisovaných v kapitole 4.
Komentáre
Komentáre sa môžu nachádzať len v tele PDF súboru. Komentáre sa začínajú znakom percento (%) a končia sa na konci riadku. Môžu začínať na hociktorej pozícii riadku.
Pokiaľ sa znak percento (%) nachádza v objekte stream alebo string, nie je považovaný za začiatok komentára.
Príklad:
%Toto bude v tele dokumentu považované za komentár (toto je reťazec STRING % pokračovanie reťazca) (aj toto je reťazec) % toto je už komentár
Tabuľka krížových odkazov
Každý PDF súbor obsahuje práve jednu tabuľku krížových odkazov. V nej sú popísané prístupy ku všetkým nepriamym objektom súboru. Každý takýto prístup je definovaný práve v jednom riadku tabuľky.
Tabuľka krížových odkazov sa rozdeľuje na sekcie. Novovytvorený PDF súbor obsahuje len jednu sekciu. Po každej úprave súboru sa počet sekcií zvýši o jednu. Sekcie sú usporiadané do jednej sekcie ako podsekcie, subsection.
Syntax pre tabuľku krížových odkazov je presne definovaná. Začína kľúčovým slovom xref a za ním nasledujú podsekcie.
Syntax:
<cross-reference section>:== xref <cross-reference subsection>+
Syntax pre podsekcie je nasledovná. Na začiatku každej podsekcie sú uvedené dva parametre. Tým prvým je číslo prvého objektu v podsekcii, druhý parameter obsahuje počet objektov, ktoré sa v podsekcii nachádzajú.
Syntax:
<cross-reference subsection>:== <číslo prvého objektu podsekcie> <počet objektov v podsekcii> <cross-reference entry>+
Príklad sekcie tabuľky krížových odkazov s jednoduchou podsekciou:
xref 0 6 0000000003 65535 f 0000000017 00000 n 0000000081 00000 n 0000000000 00007 f 0000000331 00000 n 0000000409 00000 n
Príklad sekcie tabuľky krížových odkazov so štyrmi podsekciami:
xref 0 1 0000000000 65535 f 3 1 0000025325 00000 n 23 2 0000025518 00002 n 0000025635 00000 n 30 1 0000025777 00000 n
Päta
Päta - trailer je posledná časť súboru PDF. Slúži k rýchlemu nalezeniu tabuľky krížových odkazov a niektorých dôležitých objektov v dokumente.
Platí, že aplikácia by mala čítať PDF súbor od jeho konca. Posledný riadok PDF súboru obsahuje značku konca súboru: %%EOF. Dva predchádzajúce riadky obsahujú postupné kľúčové slová startxref a offset bytu od začiatku súboru ku kľúčovému slovu xref z poslednej sekcie tabuľky krížových odkazov v dokumente.
Pred týmito riadkami je umiestnený trailer dictionary. Ten obsahuje kľúčové slovo trailer nasledované dvojicami kľúč - hodnota:
Syntax:
<trailer> ::= trailer << <trailer key-value pair>+ >>
Prehľad hodnôt v trailer-dictionary
- Size (povinné)
Celkový počet záznamov v tabuľke krížových odkazov. Počet zahŕňa všetky záznamy v dokumente - teda zo všetkých sekcií tabuľky.
- Prev (len u súboru s viacerými sekciami tabuľky krížových odkazov)
Offset bytu od začiatku súboru k predchádzajúcej sekcii tabuľky.
- Root (povinné, nepriamy odkaz)
Odkaz na objekt katalóg.
- Info (nepovinné, nepriamy odkaz)
Odkaz na informácie o dokumente.
- ID (povinné)
Pole dvoch objektov string. Touto dvojicou je určená verzia dokumentu. Prvý string je založený pri vytvorení dokumentu, druhý je zmenený pri každej modifikácii dokumentu.
- Encrypt (nepovinné)
Pokiaľ je dokument zašifrovaný, obsahuje informácie pre jeho dešifrovanie.