Kompatibilnost spremanja ovisna o verziji PDF-a

Verzija 3.23.0 tretira odabranu verziju spremanja PDF-a kao strogi ugovor izlaza za potpuno spremanje. Kada aplikacija pozove SetInformation(0, "1.2"), "1.3", "1.4", "1.5", "1.6" ili "1.7", SaveToFile, SaveToString i SaveToStream zapisuju izlaz koji odgovara odabranom cilju ili ne uspijevaju prije pisanja izlaza

Potpuna spremanja uklanjaju preklapanja Catalog /Version tako da učitani dokument ne može tiho podići učinkovitu verziju iznad odabranog zaglavlja. Ciljevi nižih verzija također uklanjaju nepodržane unose Catalog /Extensions, a ciljevi PDF-a 1.3 izostavljaju tokove Catalog /Metadata i XMP Metadata uz očuvanje informacijskog rječnika dokumenta

Predprovjera spremanja odbija poznate značajke kasnijih verzija umjesto stvaranja datoteke s mješovitom verzijom. Provjerene granice uključuju PDF 1.3 page boxove, tokove ugrađenih datoteka, JavaScript radnje, ICCBased i DeviceN prostorne boje te ToUnicode CMapove; PDF 1.4 prozirnost, strukture označenog PDF-a, output intentove i ključeve anotacija; PDF 1.5 object streamove, opcionalni sadržaj, XFA, tabove stranica, zastavice append-only za polja potpisa i napredne zastavice polja obrazaca; PDF 1.6 UserUnit, programe fontova OpenType, 3D rječnike, NChannel prostorne boje i viewport podatke; te PDF 1.7 bogate medije, projekciju, redakciju, napredne anotacije i ETSI podfiltre potpisa; Isti skup pravila također pokriva neprozirnost anotacija /CA, JBIG2Decode, tokove Metadata, name tree EmbeddedFiles na razini dokumenta, JPXDecode, xref streamove, Crypt filtre, AESV2 kriptografske filtre i zahtjeve PDF-a 1.7

Zahtjevi razine proširenja Adobe za PDF 1.7 provjeravaju se odvojeno od zaglavlja PDF-a 1.7. AESV3, AES-256, RichMedia, Projection, geospacijalni rječnici i ETSI podfiltri potpisa moraju imati dovoljnu deklaraciju Catalog /Extensions /ADBE /ExtensionLevel prije nego što se odabrani cilj spremanja prihvati. Ulazne točke za zapisivanje koje emitiraju te značajke razine proširenja automatski dodaju odgovarajuću deklaraciju proširenja kada se odabrani cilj spremanja može podići na PDF 1.7

Od v3.67.0 otkrivanje značajki sadržaja na strani učitavača je lijeno. Učitani dokument ne skenira se odmah; otkrivanje se pokreće prvi put kada se kroz GetInformation(0/101/103), GetPDFUADiagnostics, SaveToFile, SaveToString, SaveToStream ili povezane putanje append-save potroše dijagnostike učinkovite verzije ili značajki pri učitavanju. Tijekovi samo za čitanje koji nikada ne upituju te dijagnostike i nikad ne spremaju mogu preskočiti skeniranje u potpunosti

Od v3.67.1 skeniranje otkrivanja plitko raščlanjuje objekte streama. Pregledava rječnike objekata i klasifikaciju streama uz preskakanje velikih tijela streama, pa otkrivanje filtara, podtipova, prostorâ boja i ključeva za ograničavanje verzije ostaje isto, dok veliki tokovi slika više ne dominiraju skeniranjem. Uobičajena čitanja objekata i svaka putanja spremanja i dalje čitaju cijelo tijelo streama kada je za izlaz to potrebno

Od v3.67.2 izričit izbor verzije spremanja zadržava prednost nad lijenom detekcijom. Na učitanom dokumentu SetInformation(0, ...) i LockSaveVersion pokreću čekajući snimak otkrivanja prije primjene zatražene verzije, tako da kasnije spremanje ili dijagnostički upit ne mogu povisiti odabrani cilj iza leđa pozivatelja. Novoizrađeni dokumenti nisu naoružani za otkrivanje na strani učitavača, što odgovara ranijem ponašanju upravljanja verzijom samo za zapisivač

Pozivatelji TPDFlib-a dobivaju LastErrorCode 602 kada je odabrana ciljna verzija niža od značajke koja je još uvijek prisutna u dokumentu. Prije spremanja odaberite noviju ciljnu verziju ili uklonite nekompatibilnu značajku.