Uploaded by sizer.lacy

Portable Document Format

advertisement
Portable Document Format
A Wikipédiából, a szabad enciklopédiából
A Portable Document Format
(PDF) az Adobe Systems által
kifejlesztett,
dokumentumok
tárolására alkalmas fájlformátum.
A PDF alkalmas szöveget, ábrát
és
képeket
tartalmazó
dokumentum
leírására
eszközfüggetlen
és
felbontásfü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.
Portable Document Format
Fájlkiterjesztés .pdf
MIME-típus
application/pdf
Fejlesztő
Adobe Systems
Formátum
típusa
bináris fájlformátum
Mac OS
típuskód
PDF (beleértve a szóköz karaktert is az F után)
Weboldal
www.adobe.com/products/acrobat/adobepdf.html
(http://www.adobe.com/products/acrobat/adobep
df.html)
A PDF egy nyílt szabvány, ami
azt
jelenti,
hogy
bárki
jogdíjmentesen írhat alkalmazásokat, amelyek PDF formátumú dokumentumokat olvasnak vagy írnak.
Azonosító: ISO 32000-1:2008[1]
Tartalomjegyzék
Verziók
A PDF fájl fizikai felépítése
A fejléc
A törzs
A kereszthivatkozási táblázat
A lezáró rész
A PDF objektumtípusai
Logikai objektumtípus
Numerikus objektumtípus
String objektumtípus
Név objektumtípus
Tömb objektumtípus
Szótár (dictionary) objektumtípus
Stream objektumtípus
Null objektumtípus
Indirekt objektumtípus
A PDF fájl logikai felépítése
PDF és a keresőoptimalizálás
Alkalmazások
Jegyzetek
Források
További információk
Verziók
A PDF fájlformátum 2008-ban az 1.7 verziónál tartott. A PDF verziószámok két részből állnak: az első
szám (az ún. major number) akkor változik, ha a szabványban a kompatibilitást is érintő változások
történnek; a kisebb, a kompatibilitást nem érintő változásokat a második szám (az ún. minor number)
változása jelzi. Minden PDF formátumú fájl tartalmazza, hogy az adott fájl a szabvány melyik verziójának
felel meg, az adott verziót és annál kisebb verziószámot támogató PDF-nézegetőknek be kell tudni olvasni,
illetve meg kell tudni jeleníteni a fájlt. Az 1.4 verzió előtti PDF fájlok verziószáma egyértelműen kiderül a
fájl első sorából, ami egy speciális comment formájában tartalmazza a verziószámot. Az 1.4 verzió óta az
első sor által megadott verziószámot a fájlban található speciális Version bejegyzés felüldefiniálhatja és
ilyenkor az utóbbi verziószám a helyes.
A PDF fájl fizikai felépítése
A PDF fájlok fizikailag 4 különböző típusú részből állnak. Ezek a következők:
a fejléc (file header)
a törzs (file body)
a kereszthivatkozási táblázat (cross-reference table)
a lezáró rész (trailer)
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 fel 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ásstreamekben 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ó kereszthivatkozás-stream offsetje.
A fejléc
A PDF fájl fejléce egyetlen sorból, a fájl első sorában áll, ami egy speciális kommentet tartalmaz. Ez a
komment tartalmazza a PDF fájl verziószámát ASCII formátumban. A verziószámot megadó komment
után szokás még egy kommentet írni ugyanebbe a sorba. Ez a második komment az ASCII kódkészleten
kívül eső karaktereket tartalmaz azért, hogy fájlátvitel során a fájlátvitelt végző programok felismerjék,
hogy bináris fájlformátumról van szó és ne alkalmazzanak rá semmilyen konverziót, ami a bináris PDF fájlt
tönkretenné.
A törzs
A PDF fájl törzse az PDF objektumok felsorolásából áll. Minden itt felsorolt PDF objektum előtt szerepel
egy objektumazonosító szám és egy generációs szám. Ez a két szám egyértelműen azonosítja az objektumot
a PDF fájlon belül, így a fájl más pontjain hivatkozhatunk az adott objektumra.
A kereszthivatkozási táblázat
A kereszthivatkozási táblázat tartalmazza, hogy a törzsben felsorolt PDF objektumok a fájlban milyen
offsetcímen találhatóak, azaz mi az indexe annak a byte-nak a PDF fájlban, ahol az adott PDF objektum
kezdődik. A kereszthivatkozási-táblázat részek az xref kulcsszóval és az őket követő lezáró rész trailer
kulcsszójáig tartanak. Az xref kulcsszó után következő táblázatrész több szekcióból épül fel. Ezeknek a
szekciónak az első sora mindig két darab, egymástól szóközzel elválasztott egész számot tartalmaz,
amelyeknek a jelentése a következő: az első szám határozza meg a szekcióban szereplő első bejegyzés
objektumazonosítóját, a második szám pedig a szekcióban található bejegyzések számát, amelyekhez
mindig az eggyel nagyobb sorszámú objektumazonosító tartozik. Maguk a bejegyzések pontosan 20 byteos sorok, amelyeknek két fajtája van: a szabad objektumazonosítókat megadó bejegyzések és a foglalt
(használatban lévő) objektumazonosítókat megadó bejegyzések.
A lezáró rész
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 kereszthivatkozá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ó kereszthivatkozási tá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
A PDF fájlok törzsrésze PDF objektumokat tartalmaz. A PDF specifikáció a következő objektumtípusokat
támogatja:
Logikai
Numerikus
String
Név
Tömb
Szótár (dictionary)
Stream
Null
Indirekt
Logikai objektumtípus
A logikai (boolean) objektumok a true és false (igaz/hamis) kulcsszavakat tartalmazhatják tokenként.
Numerikus objektumtípus
A numerikus objektumoknak két fajtáját támogatja a PDF specifikáció: az egész értékű és valós számokat.
Az egész értékű számok decimális számjegyeket tartalmazhatnak, amik előtt opcionálisan egy mínusz jel
állhat. A valós számok tartalmazhatnak egy tizedes pontot is (a decimális számjegyek előtt, két decimális
számjegy között vagy a számjegyek után).
String objektumtípus
A string objektumoknak 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
A név objektumok első karaktere a / karakter, de ez még nem képezi a megadott név részét, csak az ezután
szereplő token.
Tömb objektumtípus
A tömb objektumokat a [ és ] zárójelek határolják. Ezek között tetszőleges PDF objektumok
szerepelhetnek, azaz egy adott tömb több különböző típusú PDF objektumot is tartalmazhat, beleértve azt
is, hogy a tömb eleme lehet egy újabb tömb is.
Szótár (dictionary) objektumtípus
A szótár objektumokat a { és } zárójelek határolják. Ezek között egy név-érték lista szerepel, ahol a név
mindig egy név típusú PDF objektum, az érték pedig tetszőleges PDF objektum lehet, beleértve a szótár
típusú PDF objektumokat is.
Stream objektumtípus
A stream objektumok egy szótár objektummal kezdődnek, amit egy, a stream, illetve endstream
kulcsszavak által határolt bytesorozat követ. (A bytesorozat lehet 0 hosszúságú is.) A stream objektum
elején szereplő szótár kötelezően tartalmaz egy Length nevet – az ehhez tartozó érték határozza meg, hogy
hány byte hosszúságú a stream és endstream között bytesorozat. Amennyiben a bytesorozot valamilyen
tömörített formában tartalmazza az adatokat (ahogy ez a gyakorlatban a legtöbb esetben történik), akkor a
stream elején megadott szótár tartalmazza az Filter vagy FFilter neveket is, amelyek az alkalmazott
tömörítési eljárást (esetleg eljárásokat) adják meg. Opcionálisan szerepelhet még a DL név is a szótárban –
az ehhez tartozó érték a bytesorozat kitömörítés utáni becsült hosszát adhatja meg.
Null objektumtípus
A null objektumot a null kulcsszó jelöli. Ezenfelül, ha egy objektumhivatkozás nemlétező indirekt
objektumra mutat, akkor azt úgy tekintjük, hogy az objektumhivatkozás a null objektumra mutat.
Indirekt objektumtípus
A PDF fájl bármely objektumából lehet indirekt objektumot képezni azáltal, hogy egy objektumazonosítót
írunk elé, az objektumazonosító után objektumot magát pedig az obj és endobj kulcsszavak közé írjuk.
(Az objektumazonosító két részből áll: az objektumszámból és a generációs számból.) Az
objektumazonosító egyedi azonosító a PDF fájlon belül, ezáltal így megcímkézett objektumokra a PDF fájl
más helyeiről hivatkozhatunk.
A PDF fájl logikai felépítése
A PDF fájl törzs részében felsorolt objektumok logikailag egy objektumhierarchiát alkotnak. Ennek a
hierarchiának a gyökere minden esetben a Catalog objektum, ami egy szótár típusú objektum. A Catalog
objektum offsetcímét a PDF fájlban a lezáró rész Root értéke által megadott indirekt hivatkozás
segítségével lehet meghatározni. Az indirekt hivatkozás az adott objektum objektumazonosítóját és
generációazonosítóját tartalmazza és ezek segítségével lehet a kereszthivatkozási táblázatból kikeresni az
offsetcímet. A PDF dokumentum oldalait ennek a Catalog által megadott objektumhierarchia page tree
részében találjuk, ami egy fastruktúrában Pages és Page típusú node-okat tartalmaz. A Page node-ok
alkotják a fa leveleit, és ezek felelnek meg a PDF dokumentum oldalainak.
PDF és a keresőoptimalizálás
Sokan nem is gondolják, hogy bizony a PDF fájlokat is lehet, sőt kell is keresőre optimalizálni. Bár
kezdetben nehézséget okozott a Google algoritmusainak ezeket a fájlokat olvasni, ma már tökéletesen
tudják őket indexelni, ami azt jelenti, hogy a PDF optimalizálás egy nagyon fontos területe lett a
keresőoptimalizálásnak. A PDF SEO (https://ad-ops.hu/seo/pdf-seo) során több tényezőre is figyelnünk
kell, ha azt szeretnénk, hogy a fájl kiemelkedő helyen jelenjen meg a kereső találatai között.
Alkalmazások
Szabadon felhasználható PDF-nézegetők rengeteg platformra elérhetőek az Adobe honlapjáról (http://ww
w.adobe.com/products/acrobat/readstep2.html), ezenkívül több nyílt forrású nézegető is létezik.
Xpdf a POSIX-szerű rendszerekre X Window System alá;
GPdf, az Xpdf változata GNOME alá;
evince: ez tud dvi és PostScript fájlokat is nézni;
GSPdf és ViewPDF (GNUstep);
és Ghostscript front-endek sok platformra.
PDFSaM
PDF.js
Sumatra PDF
A legtöbb Windows alapú szövegszerkesztő és dokumentumkezelő alkalmazás csak olvasni tudja a PDF
formátumot, azonban egy karakterfelismerő programmal (OCR) lehetőség van más típusú fájlok PDF
formátumban történő elmentésére, konvertálására. A Microsoft Office 2007 SP2 közvetlenül tud PDFfájlba menteni.
A LibreOffice irodai szoftvercsomag közvetlenül generál pdf-et ékezethelyesen, de a Mac OS X operációs
rendszernek is integráns része a PDF-kezelés, így bármely OS X-en futó alkalmazásból lehet PDF-et
nyomtatni.
Jegyzetek
csnumber=51502
1. http://www.iso.org/iso/iso_catalogue/catalogue_tc/catalogue_detail.htm?
Források
Adobe Systems Incorporated, PDF Reference fifth edition Adobe Portable Document Format
Version 1.6 (https://web.archive.org/web/20060427192430/http://partners.adobe.com/public/
developer/pdf/index_reference.html), 2004
További információk
PDF.lap.hu (http://pdf.lap.hu/) – Linkgyűjtemény
Az Acrobat Reader letöltése az Adobe honlapjáról (http://www.adobe.com/products/acrobat/r
eadstep2.html)
A lap eredeti címe: „https://hu.wikipedia.org/w/index.php?title=Portable_Document_Format&oldid=23575268”
A lap utolsó módosítása: 2021. február 13., 20:23
A lap szövege Creative Commons Nevezd meg! – Így add tovább! 3.0 licenc alatt van; egyes esetekben más módon
is felhasználható. Részletekért lásd a felhasználási feltételeket.
Download