PDF nėra dokumentų formatas ta prasme, kaip Word ar RTF. Šie formatai saugo turinio seką, kurią atvaizdavimo variklis interpretuoja rodymo metu, todėl rezultatas priklauso nuo tuo metu prieinamų šriftų ir maketavimo variklio. PDF saugo šio proceso rezultatą: tikslias atvaizdavimo instrukcijas, šriftų programas, suspaustus vaizdų srautus ir objektų grafiką, kuris juos susieja į savarankišką kiekvieno puslapio aprašą. Faile yra pakankamai informacijos, kad bet koks reikalavimus atitinkantis atvaizdavimo variklis identiškai atkartotų kiekvieną puslapį, o tai yra ir pagrindinis jo kūrimo tikslas, ir daugumos sunkumų, su kuriais susiduriama bandant jį generuoti, analizuoti ar keisti programiškai, šaltinis.
Objektų modelis
Kiekvienas PDF yra numeruotų objektų rinkinys. Objektas gali būti loginė reikšmė, sveikasis skaičius, realusis skaičius, vardas, eilutė, masyvas, žodynas, srautas arba null. Beveik viskas, kas įdomu, yra žodynas (angl. dictionary), kuris yra raktų ir reikšmių porų rinkinys, kur raktai yra vardai, o reikšmės – bet kokio kito tipo objektai, įskaitant nuorodas į kitus objektus pagal numerį ir kartos skaitiklį (angl. generation count). Srautas (angl. stream) yra žodynas, po kurio seka baitų seka, paprastai suspausta.
Katalogo žodynas (angl. catalog dictionary) yra šaknis. Jis rodo į puslapių medį, kuris puslapių žodynus organizuoja subalansuoto medžio struktūra, o ne plokščiu sąrašu, todėl norint patekti į 10 000 puslapių dokumento 5 000-ąjį puslapį, nereikia pereiti visų ankstesnių puslapių aprašų. Kiekvienas puslapio žodynas nurodo savo turinio srautus (vieną ar kelias puslapio aprašymo operatorių sekas), išteklių žodyną (kuris savo ruožtu nurodo šriftų aprašus, spalvų erdves ir vaizdo XObject objektus) bei medijos sritį (angl. media box): koordinačių erdvę, kurioje egzistuoja puslapis. Koordinačių pradžios taškas yra apatiniame kairiajame kampe, o teigiama Y ašis eina į viršų, matuojant 1/72 colio vienetais.
Failo pabaigoje yra kryžminių nuorodų lentelė (angl. cross-reference table), kuri susieja kiekvieno objekto numerį su jo baitiniu poslinkiu faile. Tai užtikrina tiesioginę prieigą: peržiūros programa pirmiausia perskaito kryžminių nuorodų lentelę, o tada iškart kreipiasi į reikiamus objektus. PDF 1.5 versijoje buvo pristatyti kryžminių nuorodų srautai, kurie suspaudžia lentelę į srauto objektą ir supakuoja susijusius objektus į objektų srautus, taip pastebimai sumažindami failo dydį dokumentuose, kuriuose yra daug mažų objektų.
Turinio srautai ir grafikos modelis
Puslapio vaizdinis turinys saugomas viename ar keliuose turinio srautuose. Kiekvienas srautas yra PDF operatorių ir jų operandų seka. Teksto operatorius BT pradeda teksto objektą, Tf pasirenka šriftą ir dydį iš išteklių žodyno, Td nustato teksto žymeklio poziciją, Tj arba TJ nupiešia eilutę, o ET uždaro teksto objektą. Vektorinė grafika seka panašiu šablonu: m nustato kelio pradžios tašką, l prideda linijos segmentą, c prideda Bezier kreivę, o f arba S užpildo arba apibrėžia kelią.
Grafikos būsena valdo viską, kas vyksta tarp operatorių: esamą transformacijos matricą, linijos plotį, spalvų erdvę, užpildymo spalvą, kontūro spalvą ir kirpimo kelią (angl. clipping path). Tokie operatoriai kaip q ir Q įkelia (push) ir iškelia (pop) grafikos būseną iš steko – taip PDF realizuoja vietines koordinačių transformacijas ir laikinimis būsenos pakeitimus, nepaveikdamas aplinkinio konteksto. Form XObjects tai apibendrina: tai savarankiškas turinio srautas su savo išteklių žodynu, kurį galima nupiešti puslapyje bet kurioje pozicijoje ir bet kokiu masteliu naudojant vieną Do operatorių.
Šriftų įterpimas ir teksto išgavimas
PDF gali nurodyti šriftus pagal pavadinimą ir pasikliauti peržiūros programa, kad ji ką nors pakeis, tačiau praktikoje bet kokiame dokumente, kuriuo ketinate dalintis, turi būti įterpti šrifto duomenys. Type 1 arba TrueType/OpenType šriftas, įterptas į PDF, turi šrifto aprašo žodyną, rodantį į šrifto failo srautą. TrueType šriftams šis srautas turi dvejetainę šrifto programą; Type 1 šriftams tai yra PFB duomenys. Šriftų poaibių kūrimas (angl. subsetting), kurį atlieka kiekvienas rimtas PDF generatorius, pašalina dokumente nenaudojamus glifus, taip išlaikant valdomą failo dydį net ir didelių Unicode šriftų atveju.
Teksto išgavimas yra ta sritis, kurioje išryškėja šriftų įterpimo problemos. Vizualų simbolio vaizdą lemia įterptos šrifto programos glifas. To simbolio Unicode reikšmę lemia prie šrifto žodyno pridėtas ToUnicode CMap srautas. Kai ToUnicode CMap trūksta arba jis yra neteisingas, PDF peržiūros programa gali įskaitomai atvaizduoti tekstą, bet negali jo išgauti kaip prasmingo Unicode, todėl kopijuojant tekstą iš kai kurių PDF gaunama šiukšlė. Pažymėtasis PDF (angl. Tagged PDF, ISO 32000 §14.8) prideda antrą sluoksnį: loginės struktūros medį, kuris puslapio turinį susieja su dokumento semantiniais vaidmenimis, tokiais kaip pastraipos, antraštės ir lentelių langeliai. Ekrano skaitytuvai ir puslapio turinio pritaikymo (reflow) varikliai naudoja struktūros medį, o ne neapdorotą turinio srauto tvarką, todėl verčiau gerai sumaketuotas PDF vis tiek gali būti nepasiekiamas neįgaliesiems, jei nėra žymėjimo arba jis yra neteisingas.
Prieauginiai atnaujinimai ir skaitmeniniai parašai
Kai išsaugote esamo PDF pakeitimus neperrašydami jo nuo nulio, nauji objektai yra pridedami po originalaus failo turinio kartu su nauja kryžminių nuorodų dalimi ir nauju pabaigos (trailer) žodynu. Atnaujintas pabaigos žodynas nurodo naujus kryžminių nuorodų duomenis, o pakeisti objektai lieka faile, tačiau nauja kryžminių nuorodų grandinė į juos tiesiog neberodo. Tai yra prieauginis atnaujinimas (angl. incremental update), turintis dvi svarbias pasekmes.
Pirma, failas didėja sulig kiekvienu išsaugojimo ciklu. Dokumentas, kuris yra redaguojamas ir išsaugomas pakartotinai, sukaupia pasenusių objektų sluoksnius. Tokie įrankiai kaip QPDF gali linijizuoti arba suspausti ir perrašyti failą, kad susigrąžintų tą vietą, tačiau pagal nutylėjimą failas tiesiog didėja. Antra, skaitmeniniai parašai naudoja prieauginius atnaujinimus savo vientisumo modeliui. ISO 32000 parašas apima failo baitų rėžį, paprastai viską, išskyrus vietą pačiai parašo reikšmei. Bet kokie po pasirašymo atlikti pakeitimai, pateikiami kaip papildomi prieauginiai atnaujinimai, patikrinimo metu yra matomi kaip pakeitimai, atlikti po pasirašymo, o tai yra būtent toks audito kelias, kokio norite. Tačiau tai taip pat reiškia, kad tam tikri pakeitimai, pavyzdžiui, patvirtinimo parašo pridėjimas arba formos laukų užpildymas, yra aiškiai leidžiami standarto ir nepanaikina pradinio parašo galiojimo, jei pakeitimai atitinka dokumento leidimų nustatymus (ISO 32000-2 §12.7.6). Pakeitimai, kurie viršija šiuos leidimus, žymimi kaip neautorizuoti. Labai svarbu teisingai suprasti šį skirtumą, kai generuojate dokumentus, kurie vėliau bus pasirašomi kitų šalių.
Atitikties lygiai ir ISO 32000 standartų šeima
PDF prasidėjo kaip nuosavas Adobe formatas 1993 metais, perėmė PostScript vaizdavimo modelį ir per penkiolika versijų sukaupė įvairių funkcijų: šifravimą 1.1 versijoje, interaktyvias formas 1.2 versijoje, skaitmeninius parašus ir loginę struktūrą 1.3 versijoje, skaidrumą 1.4 versijoje, objektų srautus 1.5 versijoje, AES šifravimą 1.6 versijoje. Adobe pateikė PDF 1.7 versiją ISO organizacijai 2007 metais, o to rezultatas buvo ISO 32000-1:2008 standartas. ISO 32000-2:2020 apima PDF 2.0, kuris sugriežtino kelias nepakankamai apibrėžtas sritis, pakeitė AES-256 rakto išvedimą (6-oji revizija pakeitė 5-ąją) ir pridėjo aiškų palaikymą susijusiems failams bei turtingajai medijai (angl. rich media).
Požymiai arba substandartai kyla iš tos pačios bazės. PDF/A (ISO 19005) paaukoja tam tikras funkcijas dėl archyvavimo stabilumo: jokių šifravimų, jokių išorinio turinio priklausomybių, visi šriftai įterpti, spalvų erdvės nepriklausomos nuo įrenginio, reikalaujama XMP metaduomenų. PDF/A-1 remiasi PDF 1.4 versija, PDF/A-2 – PDF 1.7 versija, o PDF/A-3 leidžia įterpti bet kokio formato failus. PDF/X (ISO 15930) yra spaudos gamybos poaibis: išvesties ketinimai (output intents), užlaidų (bleed) ir apkarpymo (trim) sritys, senesniuose atitikties lygiuose nenaudojamas skaidrumas. PDF/UA (ISO 14289) reikalauja pažymėtos struktūros, Unicode atitikmenų ir kalbos metaduomenų prieinamumui užtikrinti. Tai nėra konkuruojantys formatai; tai papildomų apribojimų rinkiniai ant bazinio PDF standarto, o vienas failas gali vienu metu atitikti kelis substandartus, jei šie apribojimai neprieštarauja vienas kitam.
Kuriantiems kodą, kuris generuoja arba apdoroja PDF, praktinis atskaitos taškas yra ISO 32000-2 standartas, ypatingą dėmesį skiriant skyriams apie kryžminių nuorodų modelį (§7.5), grafikos būseną (§8.4), teksto būsenos operatorius (§9.3), šriftų aprašus ir ToUnicode (§9.6 ir §9.10), interaktyvias formas (§12.7) bei skaitmeninius parašus (§12.8). Standartas yra ilgas, tačiau didžioji dalis programinio darbo su PDF pakartotinai liečia tik nedidelę jo dalį. Objektų modelio ir kryžminių nuorodų mechanizmo supratimas yra pradžios taškas; visa kita yra specializacija.