Portable Document Format

Z Wikipedie, otevřené encyklopedie
Skočit na: Navigace, Hledání
Na tento článek je přesměrováno heslo PDF. Tento článek pojednává o souborovém formátu. Další významy jsou uvedeny v článku PDF (rozcestník).

PDF (zkratka anglického názvu Portable Document FormatPřenosný formát dokumentů) je souborový formát vyvinutý firmou Adobe pro ukládání dokumentů nezávisle na softwaru i hardwaru, na kterém byly pořízeny. Soubor typu PDF může obsahovat text i obrázky, přičemž tento formát zajišťuje, že se libovolný dokument na všech zařízeních zobrazí stejně. Vytvářet PDF dokumenty lze jak v komerčním softwaru Acrobat od Adobe, tak v dalších programech (často však pouze jako export do PDF). Prohlížení je snazší, existují volně dostupné prohlížeče pro mnoho platforem, nejznámějším je oficiální prohlížeč mateřské firmy Adobe Reader. Některé aktivní typy obsahu (jako například interaktivní formuláře, 3D grafika, videa, zvuk) nejsou v mnohých PDF prohlížečích podporované. PDF soubory mají příponu .pdf popřípadě .PDF. PDF je otevřeným standardem a je snadno přenositelný (jeho reprodukce je nezávislá na použitém softwaru i hardwaru), i proto je velice rozšířený a hojně využívaný. 1. července 2008 byl tento formát publikován jako standard ISO 32000-1:2008 (vycházející z PDF 1.7).[1] PDF soubory vytvořené podle ISO normy nadále umožňují použití proprietárních technologií definovaných jen firmou Adobe (např. Adobe XML Forms Architecture, Adobe JavaScript), přičemž v rámci ISO probíhá snaha o jejich standardizaci.

Historie[editovat | editovat zdroj]

Adobe představilo formát PDF v roce 1993. Specifikace formátu byla dostupná bezplatně, ale formát zůstal proprietární až do jeho oficiálního uvolnění 1.července 2008. Poté byl publikovaný Mezinárodní organizací pro standardizaci (ISO). Specifikace formátu schválená v ISO nadále odkazuje na použití proprietárních technologií, jako je například Rich Text používaný v interaktivních formulářích Adobe XML Forms Architecture. Pracovní skupina ISO požádala firmu Adobe, aby tyto technologie stabilizovala a předložila ke standardizaci a aby mohli být zahrnuty v chystané nové verzi formátu - PDF 2.0, který je aktuálně ve vývoji.

Zpočátku nebyl balík pro prohlížení a vytváření dokumentu volně ke stažení, bylo potřeba si jej zakoupil. Při vydání verze 2.0 Adobe změnilo své stanovisko a začalo distribuovat program AcrobatReader zdarma. To otevřelo formátu PDF cestu, aby se mohl stát jedním z nejpoužívanějších formátů pro dokumenty současnosti a de facto standardem pro výměnu dokumentů na internetu.

Historie z pohledu vlastností jednotlivých verzí[editovat | editovat zdroj]

  • 1993 PDF 1.0 – Vznik PDF
  • 1994 PDF 1.1 – Podpora pro externí odkazy; Komprese LZW a JPEG; zdarma Adobe Reader, podpora pro heslo a šifrování (MD5, RC4 40bit)
  • 1996 PDF 1.2 – Přidaná interaktivní elementy stránek (radio buttons, checkboxes...), Unicode
  • 2000 PDF 1.3 - Podpora TrimBox, BleedBox, ArtBox, SmoothShading (PS3 přechody)
  • 2001 PDF 1.4 – Průhlednost, podpora RC4 šifrování pro klíče delší 40bit (40-128)
  • 2003 PDF 1.5 – Komprese JPEG 2000
  • 2005 PDF 1.6 – Vkládání OpenType fontů; AES kódování
  • 2006 PDF 1.7 – Podpora 3D formátu
  • 2008 PDF 1.7 ext3 – Vznik normy ISO 32000 Document management, 256 bit AES šifrování
  • 2009 PDF 1.7 ext5 – podpora XFA 3.0

Technické vlastnosti[editovat | editovat zdroj]

Formát PDF je založen na jazyce PostScript, některé prvky tohoto jazyka jsou však ve formátu PDF implementovány mírně odlišně, jiné nejsou použity vůbec, přidána pak je schopnost vkládat do dokumentu omezenou sadu znaků (subset) fontu, a jejich pozdější tisk na nePostScriptových zařízeních. Formát PDF také obsahuje systém pro uložení různých částí dokumentu do jediného souboru s použitím komprese, text komprimuje algoritmem LZW.

Struktura souboru[editovat | editovat zdroj]

Základní struktura PDF souboru[editovat | editovat zdroj]

  • hlavička – obsahuje verzi PDF
  • tělo – obsahuje sérii objektů požitých v dokumentu
  • tabulka odkazů – obsahuje konkrétní pozice v souboru, na kterých začíná daný objekt
  • závěrečná sekce – obsahuje pozici na které začíná tabulka odkazů[2]

PDF soubor se skládá především z objektů, kterých existuje osm druhů:[3][editovat | editovat zdroj]

  • Booleovské hodnoty (Boolean) - představují hodnoty true, nebo false. Booleovské objekty mohou být použity jako hodnoty v polích (arrays) nebo slovnících (dictionaries), také se mohou objevovat ve výpočetních funkcích PostScriptu jako výsledek booleovských a relačních operátorů a jako operandy podmíněných operátorů if a ifelse.
  • Čísla (Numbers) – PDF poskytuje dva typy numerických objektů: integer a real. Integer reprezentuje matematicky celá čísla určitého intervalu se středem v 0. Real objekty aproximují matematické reální čísla, ale s omezeným rozsahem a přesností. Typicky jsou reprezentovány pomocí pevné řádové čárky (fixed-point). Rozsah a přesnost jsou limitované vnitřní reprezentací používanou v počítači, na kterém běží uživatelská PDF aplikace.
  • Řetězce (Strings) – String objekt sestává ze série bajtů hodnot unsigned integer v rozsahu 0 až 255. String objekty nejsou objekty typu integer, ale jsou uloženy v kompaktnějším formátu. Objekty typu string mohou být zapisovány dvěma způsoby: jako sekvence literálů uzavřených v kulatých závorkách (), nebo jako hexadecimální data uzavřena v lomených závorkách <>.
  • Jména (Names) – Name object je atomický symbol jedinečně definován sekvencí znaků. Jedinečně definován znamená, že dva jmenné objekty sestávající stejné sekvence znaků jsou stejný objekt. Atomický znamená, že nemají vnitřní strukturu. Ačkoliv jsou definované sekvencí znaků, tyto nejsou považovány za elementy jména. Jméno začíná lomítkem (/). Lomítko není součástí jména, je to předpona indikující, že následující sekvence znaků představuje jméno. Mezi lomítkem a jménem se nesmějí nacházet žádné bílé znaky.
  • Pole (Arrays) - seřazené kolekce objektů – array object je jednorozměrná množina objektů seřazených sekvenčně. Na rozdíl od polí v mnohých jiných programovacích jazycích, PDF pole mohou být heterogenní, to znamená, že prvky pole mohou být jakákoliv kombinace čísel, řetězců, slovníků a dalších objektů, včetně polí samotných. Pole je zapsané jako sekvence objektů uzavřených v hranatých závorkách ([…]).
  • Slovníky (Dictionaries) - kolekce objektů indexovaných Jmény – Dictionary object je asociativní tabulka obsahující páry objektů, označovány jako záznamy slovníku. První prvek každého páru objektů je klíč (key) a druhý prvek hodnota (value). Klíč musí být typu Jméno (Name, na rozdíl od PostScriptu kde může být objekt jakéhokoliv typu). Hodnota může být jakýkoliv objekt včetně dalšího slovníku. Slovníkový záznam, kterého hodnota se rovná Null je ekvivalentní chybějícímu záznamu. (To je rozdíl oproti PostScriptu, kde se null správa jako jakýkoli jiný objekt). Slovník je zapsaný jako sekvence párů klíč-hodnota uzavřených ve dvojitých lomených závorkách (<<…>>).
  • Streamy (Streams) - Stream object stejně jako string object obsahuje sekvenci bajtů. Avšak, PDF aplikace mohou číst stream postupně, zatím co řetězce musí byt přečteny celé najednou. Navíc stream může mít neomezenou velikost. Z toho důvodu objekty s velkým množstvím dat, jako obrázky a popisy stránek (page descriptions), jsou reprezentovány pomocí streamů.
  • Prázdný (Null) objekt – má typ a hodnotu, která se nerovná žádnému jinému objektu. Existuje jenom jeden objekt typu null, označený pomocí klíčového slova null.[4]

Objekty mohou být přímé (vloženy do jiného objektu), nebo nepřímé. Nepřímé objekty jsou očíslovány číslem objektu a ¨generation number¨. Tabulka indexů nazývána xref tabulka poskytuje offset bajtu každého nepřímého objektu od začátku souboru.[5] Tato konstrukce umožňuje efektivní náhodný přístup k objektům v souboru, a také umožňuje, aby kvůli malým změnám nemusel být přepisován celý soubor (inkrementální aktualizace). Od verze PDF 1.5 mohou být nepřímé objekty také umístěny do speciálních proudů (object streams). Tato technika snižuje velikost souborů, které mají velké množství nepřímých objektů a je vhodná zejména pro Tagged PDF. Existují dvě rozložení PDF souborů, nelineární (neoptimalizované) a lineární (optimalizované). Nelineární PDF soubory spotřebují méně místa na disku než jejich lineární protějšky, mají však pomalejší přístup, protože některé z údajů potřebných pro sestavení stránky jsou roztroušena po celém souboru. Lineární PDF soubory (také označovány jako optimalizovány, nebo webově optimalizovány) jsou konstruovány způsobem, který jim umožňuje být čteny z pluginu webového prohlížeče bez nutnosti čekání na stažení celého souboru, protože jsou zapsány na disk lineárně (v pořadí podle stránek).[6] PDF soubory mohou být optimalizovány pomocí software Adobe Acrobat nebo QPDF.

Zobrazovací model[editovat | editovat zdroj]

Základní princip, jak je grafika reprezentována v PDF je velmi podobný tomu v PostScriptu, s výjimkou použití průhlednosti, která byla přidána do PDF od verze 1.4.

K popisu stránky používá PDF grafika kartézský souřadnicový systém nezávislý na použitém zařízení (device independent). Popis stránky PDF může používat matice pro rotaci, změnu měřítka, nebo zkosení grafických prvků. Klíčovým konceptem ve formátu PDF je stav grafiky (graphics state), stavové proměnné, což je kolekce grafických parametrů, které mohou být měněny, ukládány, a obnovovány popisem stránky. PDF má (od verze 1.6) 24 grafických stavových vlastnosti, z nichž 16 je nezávislých na použitém zařízení (device independent) a 8 na zařízení závislých (device dependent). Popis některých důležitých grafických stavových vlastností (device independent):

  • Současná transformační matice (CTM - Current transformation matrix), mapuje pozici z uživatelských souřadnic do souřadnic zařízení
  • Ořezová cesta (Clipping path) – aktuální ořezová cesta definuje hranice podle kterých je celý výstup ořezán
  • Barevný prostor (Color space) – současný barevný prostor, ve kterém jsou barvy interpretovány
  • Barva (Color) - současná barva používaná během vykreslovacích operací
  • Text state – skupina devíti stavových proměnných, které náleží jenom vykreslování textu
  • Tloušťka čáry (Line width) – tloušťka čar v „user space units“
  • Režim míchání (Blend mode) – od PDF 1.4. Současný režim míchání pro transparentní zobrazovací model
  • Alfa konstanta - hodnota konstanty tvaru (shape), nebo konstanty neprůhlednosti (opacity) v transparentním zobrazovacím modelu

Některé grafické stavové proměnné jsou nastavovány pomocí konkrétních operátorů, některé pomocí příslušného záznamu v slovníku grafických stavových proměnných (graphics state parameter dictionary) a jiné pomocí obou. Například aktuální tloušťka čáry může být nastavena buď operátorem w, nebo (od PDF 1.3) pomocí LW záznamu v slovníku grafických stavových proměnných, zatím co aktuální barva je nastavována jenom pomocí konkrétního operátoru.[4]

Vektorová grafika[editovat | editovat zdroj]

Vektorová grafika ve formátu PDF, stejně jako v PostScriptu, je konstruována pomocí cest (path). Cesty jsou obvykle složeny z čar a kubických Beziérových křivek, ale můžou být také vytvořeny z obrysů textu. Na rozdíl od PostScriptu, PDF neumožňuje aby jediná cesta (path) míchala tvar textu s čárami a křivkami. Cesty mohou být tahané (stroked), vyplněné, nebo použity pro ořezávání. Tahy a výplně můžou používat jakoukoliv sadu barev, včetně vzorů (patterns).

PDF podporuje několik typů vzorů. Nejjednodušší je dlaždicový vzor (tilling pattern), v němž je specifikován kousek předlohy, který se poté nanáší opakovaně. Může to být barevný dlaždicový vzor, s barvami specifikovanými ve vzorovém (pattern) objektu, nebo nebarevný dlaždicový vzor, který odkládá specifikaci barvy do doby vykreslování vzoru. Se začátkem PDF 1.3 se objevuje také stínovací (shading) vzor, který vykresluje nepřetržitě se měnící barvy. Existuje sedm druhů stínovacích vzorů, z kterých nejjednodušší jsou axiální odstín (typ 2) a radiální odstín (typ 3).

Rastrové obrázky[editovat | editovat zdroj]

Rastrové obrázky v PDF (tzv. Image XObjects) jsou reprezentovány pomocí slovníků s asociovanými streamy. Slovník popisuje vlastnosti obrázku, a stream obsahuje obrazová data. (Méně často, může být rastrový obrázek přímo součástí popisu stránky jako vložený obrázek.) Obrázky jsou obvykle filtrovány pro účely komprese. Obrazové filtry podporované v PDF zahrnují některé obecné filtry:

  • ASCII85Decode filtr používaný pro převod streamu do 7-bit ASCII
  • ASCIIHexDecode podobný ASCII85Decode ale méně kompaktní
  • FlateDecode běžně používaný filtr založený na zlib/deflate algoritmu (též gzip, ale ne zip) definován v RFC 1950 a RFC 1951; představen v PDF 1.2, může použít jednu ze dvou skupin s prognostických funkcí pro více kompaktní zlib/deflate kompresi : Predictor 2 z TIFF 6.0 specifikaci a prediktory (filtry) od PNG specifikace (RFC 2083)
  • LZWDecode filtr založený na LZW kompresi; může používat jednu ze dvou skupin prognostických funkcí pro více kompaktní LZW kompresi: Predictor 2 ze specifikace TIFF 6.0 a prediktory (filtry) z PNG specifikace
  • RunLengthDecode jednoduchá kompresní metoda streamů s opakujícími se daty za pomocí algoritmu Run-length encoding (RLE) a obrazově-specifické filtry
  • DCTDecode ztrátový filtr založený na standardu JPEG
  • CCITTFaxDecode bezeztrátový dvou úrovňový (černá/bílá) filtr založený na skupině 3 nebo skupině 4 CCITT (ITU-T) faxový kompresní standard definovaný v ITU-T T.4 a T.6
  • JBIG2Decode ztrátový nebo bezeztrátový dvou úrovňový (černá/bílá) filtr založen na standardu JBIG2, představen ve formátu PDF 1.4
  • JPXDecode ztrátový nebo bezeztrátový filtr založen na standardu JPEG 2000, který byl zaveden v PDF 1.5

Normálně veškerý obrazový obsah je součástí PDF souboru. Standard PDF však umožňuje aby obrazová data mohla být uložena v externích souborech s použitím externích streamů nebo alternativních obrázků. Některé standardizované podskupiny PDF, jako např. formát PDF/A a PDF/X, tyto funkce zakazují.

Text[editovat | editovat zdroj]

Text ve formátu PDF je reprezentován pomocí textových prvků v page content streams. Textový prvek definuje, že znaky by měly být vykresleny na určitých pozicích. Tyto znaky jsou specifikovány za pomocí kódování vybraného zdroje písma (fontu).

Fonty[editovat | editovat zdroj]

Font objekt ve formátu PDF je popis digitálního typu písma (typeface). Může buď popisovat vlastnosti typu písma, nebo může obsahovat vložený soubor s fontem. První případ se nazývá unembedded font, zatím co druhý embedded font. Soubory s fonty, které mohou být vestavěné v PDF, vycházejí z široce používaných formátů písem (fontů): Typ 1 (a jeho komprimované varianty CFF), TrueType, a (od PDF 1.6) OpenType. Navíc PDF podporuje variantu Typ 3, ve které jsou komponenty fontu písma popsané pomocí PDF grafických operátorů.

Standardní písma Typu 1 (standardních 14 Fontů)[editovat | editovat zdroj]

Čtrnáct typů písma - známé jako standardních 14 fontů - mají zvláštní význam v dokumentech PDF:

  • Times (v3) (normální, kurzíva, tučný a tučná kurzíva)
  • Courier (normální, šikmé, tučné a tučné šikmé)
  • Helvetica (v3) (normální, šikmé, tučné a tučné šikmé)
  • Symbol
  • Zapf Dingbats

Tyto fonty jsou někdy nazývány jako základních čtrnáct fontů písma.[7] Tyto fonty, nebo vhodné substituční písma se stejnými metrikami, musí být vždy k dispozici ve všech PDF prohlížečích, a tak nemusí být vloženy v PDF souboru.[8] PDF prohlížeče musejí znát metriku těchto fontů. Ostatní fonty mohou být nahrazeny, pokud nejsou vloženy v pdf souboru.

Kódování[editovat | editovat zdroj]

V textovém řetězci jsou znaky zobrazeny pomocí kódu znaku (integer), které jsou mapovány na glyfy v aktuálním fontu pomocí kódování. Existuje řada předdefinovaných kódování, včetně WinAnsi, MacRoman, a velké množství kódování pro jazyky východní Asie, a fonty můžou mít své vlastní vestavěné kódování. (I když WinAnsi a MacRoman kódování jsou odvozeny od historických vlastností operačních systémů Windows a Macintosh, fonty používající tato kódování fungují stejně dobře na všech platformách.) PDF umožňuje specifikovat předdefinované kódování, vestavěné kódování fontů, nebo poskytnout vyhledávací tabulku (lookup table) rozdílů vůči předdefinovanému nebo vestavěnému kódování (nedoporučuje se pro TrueType fonty).[9] Kódovací mechanizmy v PDF byly navrženy pro fonty Typu 1 a pravidla pro jejich požití pro TrueType fonty jsou složité.

Pro velké fonty nebo fonty s nestandardními glyfy, se požívá zvláštní kódování Identity-H (pro horizontální zápis) a Identity-V (pro vertikální). Pro takové druhy fontů je nutné poskytnout ToUnicode tabulku, pokud má být uchována informace o sémantice znaků.

Průhlednost[editovat | editovat zdroj]

Původní zobrazovací model PDF byl, stejně jako v PostScriptu, neprůhledný: každý objekt vykreslen na stránce zcela nahrazoval cokoliv dříve vykreslené na stejném místě. Od verze 1.4 byl PDF zobrazovací model rozšířen tak, aby umožňoval průhlednost. Je-li průhlednost použita, nové objekty interagují s dříve zobrazenými objekty, aby vytvořili efekt prolínání. Funkce transparentnosti byla do PDF přidána s ohledem na zpětnou kompatibilitu, tak aby mohla být ve verzích PDF 1.3 a předchozích ignorována. V důsledku toho by soubory, které používají malé množství transparentnosti, měly být zobrazeny přijatelně i ve starších prohlížečích. Avšak soubory využívající velké množství transparentnosti mohou být staršími prohlížeči zobrazeny nesprávně bez varování.

Rozšíření transparentnosti jsou založeny na klíčových pojmech jako: skupiny transparentnosti (transparency groups), režimů prolnutí (blending modes), tvar (shape) a alfa (alpha). Model je úzce spojen s funkcemi Adobe Illustrator verze 9. Režimy prolnutí byly založeny na těch, která byly v té době používána v Adobe Photoshop. Když byla zveřejněna specifikace PDF 1.4, byly vztahy pro výpočet režimy blendingu drženy v tajnosti. Od té doby jich však společnost Adobe publikovala.[10]

Porovnání s dalšími formáty[editovat | editovat zdroj]

Formát PDF je možné srovnat s dalšími formáty pro uložení (převážně) textových dokumentů:

PostScript[editovat | editovat zdroj]

Podrobnější informace naleznete v článku PostScript.

Jak už bylo zmíněno, PDF z PostScriptu vychází, takže jejich schopnosti jsou do značné míry podobné. Nejviditelnější rozdíl je ve velikosti souborů. Jelikož soubory PDF automaticky používají kompresi, jsou typicky výrazně menší než odpovídající dokumenty ve formátu PostScript.

(X)HTML[editovat | editovat zdroj]

Jazyk HTML si za cíl klade popsat obsah WWW stránky tak, že konkrétní způsob zobrazení stránky je na libovůli prohlížeče, potažmo uživatele. To na jedné straně umožňuje zobrazovat dokumenty tak, aby vyhovovaly čtenáři, na straně druhé znemožňuje zaručit přesně stejný vzhled dokumentu u všech uživatelů. Oproti tomu je cílem formátu PDF zajistit co nejpřesněji stejné zobrazení na libovolném zařízení.

Formát PDF je proto před HTML upřednostňován zvláště v případě graficky bohatého návrhu, u kterého autor vyžaduje dodržení původního vzhledu, u reklamních materiálů, prospektů apod. V rámci HTML lze téhož dosáhnout pomocí bitmapové grafiky či (v poslední době) pomocí vektorové grafiky, např. ve formátu SVG. Takové řešení však trpí mnoha nedostatky a odstraňuje většinu předností jednoduchého textového formátu. Výsledné dokumenty jsou také obvykle výrazně větší než původní HTML text.

Typickým příkladem rozdílů je chování při zvětšování dokumentu, např. pro lepší čitelnost pro osoby s vadou zraku:

  • Při zvětšení PDF dokumentu se pouze zvětšuje měřítko, vzhled dokumentu zůstává zachován; při vysokém zvětšení se na obrazovku nevejde celý sloupec textu a je třeba horizontální posuv pro čtení celého řádku.
  • Pro zvětšení HTML dokumentu stačí zvětšit velikost použitého písma, text se přeformátuje tak, aby se stále vešel do šířky okna prohlížeče, při tom se ovšem vzhled dokumentu změní, řádkové zlomy jsou mezi jinými slovy, dokumentu se zvýší počet řádků textu atd. (Poznámka: novější verze formátu PDF umožňují vytvářet dokumenty, které se mohou také přeformátovat stejným způsobem, tato možnost však obvykle využívána není.)

Software pro práci s PDF[editovat | editovat zdroj]

  • Vytváření a úprava dokumentů: Adobe Acrobat, PDF-XChange Pro, PDF-XChange Viewer Pro.
  • Export do PDF: většina dobrých grafických programů a textových procesorů.
  • Vytvořit PDF soubor lze z textu také jeho odesláním na virtuální tiskárnu, která netiskne na fyzický papír, ale do souboru. Omezení konkrétního procesoru, že tento formát souboru neumí sám vytvořit, lze snadno obejít vlastností operačního systému, který programům služby tiskáren zprostředkovává.

Prohlížení[editovat | editovat zdroj]

Kromě oficiálního bezplatně použitelného Adobe Readeru existuje celá řada programů schopných pracovat s formátem PDF. Patří mezi ně např. prohlížeč PDF-XChange Viewer, Foxit Reader, Sumatra PDF nebo open source prohlížeč Xpdf, který obsahuje i programy na extrahování textu, fontů a obrázků z PDF a též i převod PDF na PostScript nebo PPM.

Související články[editovat | editovat zdroj]

Reference[editovat | editovat zdroj]

  1. ISO 32000-1:2008 – Document management -- Portable document format -- Part 1: PDF 1.7
  2. url=http://www.gnupdf.org/Introduction_to_PDF title=Introduction to PDF
  3. Adobe Systems, PDF Reference, p. 51.
  4. a b PDF Reference, sixth edition, Version 1.7, November 2006 [online]. . Dostupné online. (anglicky) 
  5. Adobe Systems, PDF Reference, pp. 39–40.
  6. Adobe Developer Connection: PDF Reference and Adobe Extensions to the PDF Specification [online]. Adobe Systems, [cit. 2013-02-02]. Dostupné online. (anglicky) 
  7. Adobe Acrobat Base 14 Fonts
  8. The PDF Font Aquarium
  9. PDF Referencem Sixth Edition, version 1.7, table 5.11 [online]. . Dostupné online. (anglicky) 
  10. PDF Blend Modes Addendum

Externí odkazy[editovat | editovat zdroj]