„Portable Document Format” változatai közötti eltérés

a
korr
a (r2.7.1) (Bot: következő módosítása: fo:PDF)
a (korr)
|típuskód = <tt>PDF </tt> (beleértve a szóköz karaktert is az F után)
}}
 
A '''portable document format''' (PDF) az [[Adobe Systems]] által kifejlesztett [[kettes számrendszer|bináris]] [[fájlformátum]]. Ebben a formátumban dokumentumok tárolhatók, amelyek különböző [[szoftver]]ekkel, [[hardver]]ekkel és [[operációs rendszer]]ekkel olvashatók és létrehozhatók. A PDF alkalmas szöveget, ábrát és képeket tartalmazó dokumentum leírására [[eszközfüggetlen]] és [[felbontás]]független formában. A dokumentum lehet egyoldalas, és több ezer oldalas is, egyszerű vagy összetett: sokféle betűtípussal, ábrával, színnel és képpel, továbbá tartalmazhat interaktív beviteli mezőket, nyomógombokat stb., lehetőséget teremtve arra, hogy üres űrlapokat hozzunk létre, amit a felhasználók később elektronikus formában is ki tudnak tölteni.
 
A PDF fájlok támogatják az incrementális update-elést és ezért a törzs, a kereszthivatkozási táblázat és a lezáró rész (ebben a sorrendben) többször is előfordulhatnak a fájlban, azaz az incrementális update során újabb törzsadatok, kereszthivatkozási táblázat és lezáró rész lesz hozzáfűzve a meglévő fájlhoz anélkül, hogy a már meglévő adatokat megváltoztatnánk. Ebből következően a PDF fájlok elemzését (parse-olását) a fájl végén az utolsó lezáró résznél kell kezdeni, majd visszafelé haladva a lezáró részeken és az azokat megelőző kereszthivatkozás-táblázat részeken fell kell építeni a végleges kereszthivatkozás táblázatot. Ha egy objektumazonosító több kereszthivatkozás-táblázat részben is előfordul, akkor az utolsó előfordulás által megadott hivatkozásnak kell a végleges kereszthivatkozás táblázatba bekerülni.
 
Az 1.5 verziótól kezdve a PDF objektumokat tömörített formában, objektumstreamekben is lehet tárolni a PDF fájlban, illetve a kereszthivatkozási táblázatot és a lezáró részt pedig tömörített kereszthivatkozás-streamekben lehet megadni. Ilyen esetben a fent megadott fizikai felépítése a PDF fájlnak a következőképpen módosul: a fejléc és a törzs megmarad, de a törzs már tömörített objektumstreameket és kereszthivatkozás-streameket is tartalmaz PDF objektumként, a kereszthivatkozási táblázat-részek és a lezáró részek helyett pedig csak utolsó lezáró utolsó 3 sora marad meg, amelyek a '''startxref''' kulcsszót, egy offsetértéket és a %%EOF kommentet tartalmazzák. Az offsetérték jelentése ebben az esetben nem az utolsó kereszhivatkozás-rész kezdete lesz, hanem az utolsó kereszhivatkozáskereszthivatkozás-stream offsetje.
 
=== A fejléc ===
A PDF-et lezáró rész a '''trailer''' kulcsszóval kezdődik, majd ezt egy speciális név-érték lista követi, ahol többek között a következő információk vannak megadva:
* a törzs részben (illetve incrementális update esetén: az összes törzs részben) szereplő PDF objektumok száma
* ha több lezáró rész is található a fájlban, akkor az előző lezáró rész előtti kereszhivatkozásikereszthivatkozási táblázat offsetcíme
* a PDF dokumentum logikai felépítését megadó PDF objektumok közül a logikai felépítés kiindulópontjául szolgáló gyökérelem offsetcíme a dokumentumon belül.
* a PDF fájl fájlazonosítója
A név-érték lista után a '''startxref''' kulcsszó, majd az utolsó kereszhivatkozásikereszthivatkozási táblazatrésztáblázatrész offsetcíme következhet, végül pedig az %%EOF speciális komment zárja a PDF fájlt.
 
== A PDF objektumtípusai ==
 
=== String objektumtípus ===
A string objektumoknek szintén két fajtáját különbözteti meg a PDF specifikáció: a hagyományos stringeket, amelyeket a ''''''( és )'''''' zárójelek határolnak, illetve a hexadecimális formában megadott stringeket, amelyeket a '''<''' és '''>''' zárójelek határolnak. A hagyományos stringek tetszőleges bytesorozatot tartalmazhatnak, de a ''''''( és )'''''' zárójeleket '''\(''' és '''\)''' karakterekkel kell helyettesíteni (escape-elni). (Ha a zárójelek egymásba ágyazva fordulnak elő a stringben, például ((( ))) sorrendben, akkor nincs szükség a behelyettesítésre.) A ''''''( és )'''''' zárójelek mellett még lehetőség van a szokásos vezérlő karakterek (újsor stb.) helyettesítésére '''\n''', '''\b''', '''\t''', '''\f''' és '''\r''' karakterekkel. A hexadecimális formában megadott stringek esetén a '''<''' és '''>''' zárójelek között hexadecimális számjegyeknek kell szerepelniük. Az a-f hexadecimális számjegyek használhatóak kisbetűvel és nagybetűvel írva is. Két hexadecimális karakter határoz meg egy byte-ot (azaz egy PDF specifikáció szerinti karaktert). Ha páratlan számú hexadecimális számjegy szerepel a zárójelek között, akkor feltételezzük, hogy az utolsó hexadecimális számpár második számjegye a nulla.
A string objektumoknek szintén két fajtáját különbözteti meg a PDF specifikáció: a hagyományos stringeket, amelyeket a ''''''( és )'''''' zárójelek határolnak, illetve a hexadecimális formában megadott stringeket, amelyeket a
'''<''' és '''>''' zárójelek határolnak. A hagyományos stringek tetszőleges bytesorozatot tartalmazhatnak, de a ''''''( és )'''''' zárójeleket '''\(''' és '''\)''' karakterekkel kell helyettesíteni (escape-elni). (Ha a zárójelek egymásba ágyazva fordulnak elő a stringben, például ((( ))) sorrendben, akkor nincs szükség a behelyettesítésre.) A ''''''( és )'''''' zárójelek mellett még lehetőség van a szokásos vezérlő karakterek (újsor stb.) helyettesítésére '''\n''', '''\b''', '''\t''', '''\f''' és '''\r''' karakterekkel.
A hexadecimális formában megadott stringek esetén a '''<''' és '''>''' zárójelek között hexadecimális számjegyeknek kell szerepelniük. Az a-f hexadecimális számjegyek használhatóak kisbetűvel és nagybetűvel írva is. Két hexadecimális karakter határoz meg egy byte-ot (azaz egy PDF specifikáció szerinti karaktert). Ha páratlan számú hexadecimális számjegy szerepel a zárójelek között, akkor feltételezzük, hogy az utolsó hexadecimális számpár második számjegye a nulla.
 
=== Név objektumtípus ===