PDF ni format dokumenta na način, kot sta Word ali RTF. Ta formata shranjujeta zaporedje vsebine, ki jo upodabljalnik (renderer) interpretira v trenutku prikaza, zato je izpis odvisen od pisav in mehanizma za postavitev, ki sta takrat na voljo. PDF pa shranjuje rezultat tega procesa: natančna navodila za upodabljanje, programe pisav, stisnjene slikovne tokove in graf objektov, ki jih povezuje v samozadostno opis vsake strani. Datoteka vsebuje dovolj informacij za povsem enak prikaz vsake strani na katerem koli skladnem upodabljalniku, kar je hkrati njen glavni oblikovalski cilj in vir večine zapletov, s katerimi se srečate pri programskem ustvarjanju, analiziranju ali spreminjanju.
Objektni model
Vsak PDF je zbirka oštevilčenih objektov. Objekt je lahko logična vrednost (boolean), celo število, realno število, ime, niz, polje, slovar (dictionary), tok (stream) ali null. Skoraj vse zanimive strukture so slovarji, ki predstavljajo nize parov ključ-vrednost, kjer so ključi imena, vrednosti pa kateri koli drug tip objekta, vključno s sklici na druge objekte prek številke in številke generacije. Tok je slovar, ki mu sledi zaporedje bajtov, običajno stisnjeno.
Slovar kataloga (catalog dictionary) je koren. Kaže na drevo strani (page tree), ki organizira slovarje strani v uravnoteženi strukturi drevesa namesto v ravnem seznamu, zato navigacija do strani 5.000 v dokumentu z 10.000 stranmi ne zahteva prehajanja vseh predhodnih opisovalcev strani. Vsak slovar strani se sklicuje na svoje tokove vsebine (eno ali več zaporedij operatorjev za opis strani), svoj slovar virov (ki se sklicuje na opisovalce pisav, barvne prostore in slikovne XObjekte) in svoj medijski okvir (media box), ki določa koordinatni prostor strani. Koordinatno izhodišče je v spodnjem levem kotu, pri čemer pozitivna os Y poteka navzgor, v enotah 1/72 palca.
Na koncu datoteke se nahaja navzkrižna tabela (cross-reference table), ki preslika vsako številko objekta v njegov bajtni odmik v datoteki. To omogoča naključni dostop: pregledovalnik najprej prebere navzkrižno tabelo, nato pa skoči neposredno do potrebnih objektov. PDF 1.5 je uvedel tokove navzkrižnih sklicev (cross-reference streams), ki stisnejo tabelo v objekt toka in zapakirajo sorodne objekte v tokove objektov, kar opazno zmanjša velikost datoteke za dokumente s številnimi majhnimi objekti.
Tokovi vsebine in grafični model
Vizualna vsebina strani živi v enem ali več tokovih vsebine. Vsak tok je zaporedje operatorjev PDF, prepletenih z njihovimi operandi. Operator besedila BT začne besedilni objekt, Tf izbere pisavo in velikost iz slovarja virov, Td pozicionira besedilni kazalec, Tj ali TJ izriše niz in ET zapre besedilni objekt. Vektorska grafika sledi podobnemu vzorcu: m nastavi začetno točko poti, l doda segment črte, c doda Bezierjevo krivuljo in f ali S zapolni ali obriše pot.
Grafično stanje (graphics state) upravlja z vsem, kar se dogaja med operatorji: trenutno transformacijsko matriko, debelino črte, barvnim prostorom, barvo polnila, barvo obrobe in potjo izrezovanja. Operatorji, kot sta q in Q, potisnejo in odstranijo grafično stanje s sklada, s čimer PDF izvaja lokalne koordinatne transformacije in začasne spremembe stanja, ne da bi to vplivalo na okoliški kontekst. Form XObjects to posplošujejo: samozadosten tok vsebine z lastnim slovarjem virov, ki ga je mogoče izrisati na stran na poljubnih položajih in v poljubnem merilu z enim samim operatorjem Do.
Vgradnja pisav in ekstrakcija besedila
PDF se lahko sklicuje na pisave po imenu in se zanaša na to, da bo pregledovalnik nadomestil pisavo, vendar mora v praksi vsak dokument, ki ga nameravate deliti, vsebovati vgrajene podatke o pisavi. Pisava Type 1 ali TrueType/OpenType, vgrajena v PDF, vsebuje slovar opisovalca pisave, ki kaže na tok datoteke pisave. Za pisave TrueType ta tok vsebuje binarni program pisave; za Type 1 so to podatki PFB. Delno vgrajevanje (subsetting), kar počne vsak resen generator PDF, odstrani glife, na katere se dokument ne sklicuje, s čimer ohranja velikost datoteke obvladljivo tudi za velike pisave Unicode.
Ekstrakcija besedila pa je področje, kjer se vgradnja pisav zaplete. Vizualna predstavitev znaka je določena z glifom v vgrajenem programu pisave. Unicode vrednost tega znaka pa je določena s tokom ToUnicode CMap, ki je priložen slovarju pisave. Če ToUnicode CMap manjka ali je napačen, lahko pregledovalnik PDF besedilo izriše čitljivo, vendar ga ne more ekstrahirati kot smiseln Unicode, zaradi česar kopiranje in lepljenje iz nekaterih datotek PDF ustvari neuporabne znake. Označeni PDF (Tagged PDF, ISO 32000 §14.8) dodaja še eno plast: drevo logične strukture, ki vsebino strani preslika v dokumentno-semantične vloge, kot so odstavki, naslovi in celice tabel. Bralniki zaslona in mehanizmi za preoblikovanje besedila uporabljajo drevo strukture namesto surovega vrstnega reda toka vsebine, kar pojasnjuje, zakaj je vizualno dobro urejen PDF lahko še vedno nedostopen, če označevanje manjka ali je napačno.
Inkrementalne posodobitve in digitalni podpisi
Ko shranite spremembe v obstoječi PDF, ne da bi ga znova napisali od začetka, se novi objekti dodajo za prvotnim telesom datoteke skupaj z novim odsekom navzkrižnih sklicev in novim slovarjem zaključnih podatkov (trailer dictionary). Posodobljeni zaključek kaže na nove podatke navzkrižnih sklicev, nadomeščeni objekti pa ostanejo v datoteki, vendar se nanje nova veriga navzkrižnih sklicev preprosto ne sklicuje več. To is inkrementalna posodobitev, ki ima dve pomembni posledici.
Prvič, datoteka raste z vsakim ciklom shranjevanja. Dokument, ki ga večkrat urejate in shranjujete, kopiči plasti zastarelih objektov. Orodja, kot je QPDF, lahko linearizirajo ali stisnejo in znova zapišejo datoteko, da povrnejo ta prostor, vendar je privzeto vedenje kopičenje. Drugič, digitalni podpisi so za svoj model celovitosti odvisni od inkrementalnih posodobitev. Podpis po standardu ISO 32000 pokriva bajtni obseg datoteke, običajno vse razen mesta za samo vrednost podpisa. Vse spremembe po podpisu, ki se pojavijo kot dodatne inkrementalne posodobitve, so za pregledovalnik vidne kot modifikacije po podpisu, kar je natanko revizijska sled, ki jo želite. Vendar to tudi pomeni, da so določene spremembe, kot je dodajanje podpisa odobritve ali izpolnjevanje obrazcev, s standardom izrecno dovoljene brez razveljavitve prvotnega podpisa, pod pogojem, da so spremembe v skladu z nastavitvami dovoljenj dokumenta (ISO 32000-2 §12.7.6). Sprememba, ki presega ta dovoljenja, se označi kot nepooblaščena. Pravilno razumevanje te razlike je ključno pri ustvarjanju dokumentov, ki bodo pozneje sopodpisani.
Skladnostni nivoji in rodbina ISO 32000
PDF se je začel kot lastniški format podjetja Adobe leta 1993, prevzel slikovni model PostScript in skozi petnajst različic kopičil funkcije: šifriranje v 1.1, interaktivne obrazce v 1.2, digitalne podpise in logično strukturo v 1.3, prosojnost v 1.4, tokove objektov v 1.5 ter šifriranje AES v 1.6. Adobe je leta 2007 predložil PDF 1.7 organizaciji ISO, rezultat pa je bil ISO 32000-1:2008. ISO 32000-2:2020 pokriva PDF 2.0, ki je poostril več nedorečenih področij, spremenil izpeljavo ključev AES-256 (revizija 6, ki nadomešča revizijo 5) ter dodal izrecno podporo za povezane datoteke in bogate medije.
Podstandardi izhajajo iz iste osnove. PDF/A (ISO 19005) žrtvuje funkcije za arhivsko stabilnost: brez šifriranja, brez odvisnosti od zunanje vsebine, vse pisave morajo biti vgrajene, barvni prostori morajo biti neodvisni od naprave in zahtevani so metapodatki XMP. PDF/A-1 temelji na PDF 1.4, PDF/A-2 na PDF 1.7, PDF/A-3 omogoča vgrajene datoteke katerega koli formata. PDF/X (ISO 15930) je podmnožica za tiskarsko produkcijo: izhodni nameni (output intents), polja za izrez in obrez (bleed and trim boxes) ter brez prosojnosti v starejših nivojih skladnosti. PDF/UA (ISO 14289) predpisuje označeno strukturo, preslikave Unicode in jezikovne metapodatke za dostopnost. To niso konkurenčni formati, temveč nizi dodatnih omejitev nad osnovnim PDF-jem, jedna sama datoteka pa lahko ustreza več kot enemu hkrati, če omejitve niso v konfliktu.
Za vsakogar, ki piše kodo za ustvarjanje ali obdelavo PDF-jev, je praktična izhodiščna točka ISO 32000-2 s posebno pozornostjo na poglavja, ki pokrivajo model navzkrižnih sklicev (§7.5), grafično stanje (§8.4), operatorje stanja besedila (§9.3), opisovalce pisav in ToUnicode (§9.6 in §9.10), interaktivne obrazce (§12.7) in digitalne podpise (§12.8). Standard je obsežen, vendar se večina programskega dela s PDF-ji dotika le ozkega dela. Razumevanje objektnega modela in mehanizma navzkrižnih sklicev je vstopna točka, vse ostalo pa je specializacija.