PDF (zkratka anglického názvu Portable Document Format – Př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).ISO 32000-1:2008 – Document management -- Portable document format -- Part 1: PDF 1.7 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 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 je ke standardizaci, aby mohly 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 zakoupit. Při vydání verze 2.0 Adobe změnilo své stanovisko a začalo distribuovat program Acrobat Reader 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í 1993 PDF 1.0 – Vznik PDF – přenos mezi počítačovými platformami Mac, Windows a UNIX 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řidány interaktivní elementy stránek (radio buttons, checkboxes…), Unicode, podpora základních tiskových barev (CMYK) a přímé barvy 2000 PDF 1.3 – Podpora TrimBox, BleedBox, ArtBox, SmoothShading (PS3 přechody), zvětšení maximální velikosti 2001 PDF 1.4 – Průhlednost, podpora RC4 šifrování pro klíče delší 40bit (40-128) 2003 PDF 1.5 – Komprese JPEG 2000, preflight 2005 PDF 1.6 – Vkládání OpenType fontů; AES kódování 2006 PDF 1.7 – Podpora 3D formátu, podpora PDF/A 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 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

Základní struktura PDF souboru 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ůPortable Document Format: An Introduction for Programmers

Druhy objektů Soubor PDF se skládá především z objektů, kterých existuje osm druhů:Adobe Systems, PDF Reference, p. 51. 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.

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.Adobe Systems, PDF Reference, pp. 39–40. Tato konstrukce umožňuje efektivní libovolný 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šeny 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). PDF soubory mohou být optimalizovány pomocí software Adobe Acrobat nebo QPDF.

Zobrazovací model 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.

Vektorová grafika

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 Bézierových křivek, ale mohou 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ě mohou 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