Kompatibilnost čuvanja specifična za PDF verziju

Verzija 3.23.0 tretira izabranu PDF verziju za čuvanje kao strogi ugovor izlaza za puno čuvanje. Kada aplikacija pozove SetInformation(0, "1.2"), "1.3", "1.4", "1.5", "1.6" ili "1.7", SaveToFile, SaveToString i SaveToStream upisuju izlaz koji odgovara izabranom cilju ili otkazuju pre upisa izlaza

Puna čuvanja uklanjaju Catalog /Version prepisivanja tako da učitani dokument ne može neprimetno da podigne efektivnu verziju iznad izabranog zaglavlja. Ciljevi niže verzije takođe uklanjaju nepodržane Catalog /Extensions unose, a ciljevi PDF 1.3 izostavljaju Catalog /Metadata i XMP Metadata tokove uz zadržavanje dokumentacionog informacionog rečnika

Predprovera čuvanja odbija poznate funkcije kasnijih verzija umesto da proizvodi datoteku sa mešovitim verzijama. Proverene granice obuhvataju PDF 1.3 okvire stranica, tokove ugrađenih datoteka, JavaScript akcije, ICCBased i DeviceN prostore boja i ToUnicode CMap-ove; PDF 1.4 transparentnost, strukture označenog PDF-a, namere izlaza i ključeve anotacija; PDF 1.5 object streams, opcioni sadržaj, XFA, kartice stranica, zastavice samo za dodavanje za polja potpisa i napredne zastavice polja obrasca; PDF 1.6 UserUnit, OpenType programske fontove, 3D rečnike, NChannel prostore boja i podatke o viewport-u; i PDF 1.7 rich media, projection, redaction, napredne anotacije i ETSI podfiltere potpisa; Isto pravilo takođe pokriva anotacije /CA opacity, JBIG2Decode, Metadata tokove, stablo naziva EmbeddedFiles na nivou dokumenta, JPXDecode, xref tokove, Crypt filtere, AESV2 kript filtere i PDF 1.7 Requirements

PDF 1.7 Adobe ekstenzijski zahtevi proveravaju se odvojeno od PDF 1.7 zaglavlja. AESV3, AES-256, RichMedia, Projection, geografski rečnici i ETSI podfilteri potpisa moraju imati dovoljnu deklaraciju Catalog /Extensions /ADBE /ExtensionLevel pre nego što se izabrani cilj čuvanja prihvati. Ulazne tačke za upis koje emituju te funkcije na nivou ekstenzije automatski dodaju odgovarajuću deklaraciju ekstenzije kada izabrani cilj čuvanja može da se podigne na PDF 1.7

Od v3.67.0, otkrivanje sadržajnih funkcija na strani učitavača je lenjo. Učitani dokument se ne skenira odmah; otkrivanje se pokreće prvi put kada se efektivna verzija ili dijagnostika funkcija pri učitavanju potroše kroz GetInformation(0/101/103), GetPDFUADiagnostics, SaveToFile, SaveToString, SaveToStream ili srodne putanje za append-save. Tokovi samo za čitanje koji nikada ne zatraže te dijagnostike i nikada ne čuvaju mogu da preskoče skeniranje u potpunosti

Od v3.67.1, skeniranje otkrivanja plitko parsira objekte tokova. Pregledava rečnike objekata i klasifikaciju tokova dok preskače velika tela tokova, tako da otkrivanje filtera, podtipova, prostora boja i ključeva za ograničavanje verzije ostaje isto, a veliki tokovi slika više ne dominiraju skeniranjem. Uobičajeno čitanje objekata i svaka putanja čuvanja i dalje čitaju celo telo toka kada je izlazu to potrebno

Od v3.67.2, eksplicitni izbori verzije za čuvanje zadržavaju prednost nad lenjim otkrivanjem. Na učitanom dokumentu, SetInformation(0, ...) i LockSaveVersion prvo izvršavaju čekajući snimak otkrivanja pre primene tražene verzije, tako da kasnije čuvanje ili dijagnostički upit ne može da podigne izabrani cilj iza leđa pozivaoca. Novo kreirani dokumenti nisu naoružani za otkrivanje na strani učitavača, što odgovara ranijem ponašanju kontrole verzije samo za pisanje

TPDFlib pozivaoci dobijaju LastErrorCode 602 kada je izabrana ciljana verzija niža od funkcije koja je i dalje prisutna u dokumentu. Izaberite noviju ciljnu verziju ili uklonite nekompatibilnu funkciju pre čuvanja