Automatizovana pokrivenost validacije

Ažuriranje preflight izveštaja u verziji 3.56.37 dodaje dokumentovan put automatizacije uz postojeće PDF/A i PDF/UA-1 provere fajlova. Delphi demo PreflightReport sada pokriva izveštaje za jedan fajl, grupe direktorijuma, tekstualni, JSON, HTML i CSV izlaz, UTF-8 zbirne CSV datoteke i poređenje bazne linije običnog teksta kroz ComparePreflightReports. Tests.Preflight proverava odeljke izveštaja, mašinski čitljiv JSON, samostalni HTML, CSV redove, UTF-8 izlaz snimanja, linije razlika i normalizaciju vremenskih oznaka

Niz izmena PDF/UA revizije od 3.56.0 do 3.56.25 proširuje dijagnostiku čitača i pisca oko PDF/UA-1 metapodataka, MarkInfo, RoleMap, dozvola pristupa enkripciji, XFA, referentnih XObject objekata, redosleda oznaka i opisa anotacija, FileSpec imena, OCG konfiguracionih rečnika, ugrađivanja fontova i TrueType kodiranja, reda naslova, numerisanja lista, Note ID-ova, medijskih klipova i ponovljenih direktnih H dece. Niz putanja niskog nivoa čitača izlaže se kroz CheckFileCompliance, a in-memory putanja pisca kroz GetPDFUADiagnostics

Posao validacije PAdES serije 3.56.x dodaje testove i referentnu pokrivenost za izbor hash funkcije, autentifikovane atribute PAdES-B-B, IssuerSerial u signing-certificate-v2, dopunu signature-time-stamp, DSS/VRI sastavljanje, oznake tipa obaveze i atribute politike potpisa. Ove provere obuhvaćene su u testovima potpisa i posebnom PAdES delu u poglavlju Security i Signatures

Ažuriranje validacije 3.23.0 uvodi strogu proveru usklađenosti verzije PDF-a za PDF 1.2 i dodaje Adobe proveru nivoa ekstenzije PDF 1.7. Ciljevi snimanja PDF 1.2 sada odbijaju PDF 1.3+ karakteristike kao što su podaci TrimBox stranice pre upisa izlaza. AESV3, AES-256, RichMedia, Projection, geospatial rečnici i ETSI potpisni subfilteri proveravaju se prema zahtevanom /Extensions /ADBE /ExtensionLevel deklarativnom zapisu. Ulazne tačke pisca koje emituju te karakteristike nivoa ekstenzije sada automatski upisuju odgovarajući ADBE nivo ekstenzije, a append snimanja pokreću isti preflight kao i puna snimanja. Tests.Document, Tests.Version i fixture C++Builder Tests.VersionCompliance pokrivaju strogo odbijanje PDF 1.2, AES-256 ExtensionLevel izlaz, preflight pri append snimanju i SSOT pravila nivoa ekstenzije

Ažuriranje validacije 3.20.0 proširuje osiguranje writer-side EnsureMinVersion na još osam PDFlib ulaznih tačaka: SetDocumentMetadata (PDF 1.4 — /Metadata XMP stream), SetPDFAMode (PDF 1.4 — /MarkInfo i /OutputIntents), PageJavaScriptAction (PDF 1.5 — Page /AA), DocJavaScriptAction (PDF 1.4 — Catalog /AA), SetTabOrderMode (PDF 1.5 — Page /Tabs), NewOptionalContentGroup (PDF 1.5 — /Type /OCG), SetNeedAppearances (PDF 1.5 — AcroForm /NeedAppearances) i NewFormField za polja potpisa (PDF 1.5 — AcroForm /SigFlags AppendOnly bit). U kombinaciji sa zapisima v3.15.0 i v3.17.0, PDFlib sada automatski podiže FVersion kroz dvadeset jedan writer ulazni punkt. NewOptionalContentGroup ranije je direktno podizao FVersion, zaobilazeći EnsureMinVersion i LockSaveVersion; sada se ruta vodi preko pravilnog puta kako bi se blokada poštovala i kako bi se skok pojavio u AutoBumpedFeatures. Tests.Document pokriva šest novih auto-bump slučajeva (SetDocumentMetadata 1.3 → 1.4, SetTabOrderMode 1.3 → 1.5, SetPDFAMode 1.3 → 1.4, NewOptionalContentGroup 1.3 → 1.5, SetNeedAppearances 1.3 → 1.5, NewFormField signature 1.3 → 1.5)

Ažuriranje validacije 3.19.0 implementira četiri prethodno odložena SSOT pravila. /Ff bit 15 NoToggleToOff za Btn polje (maska 16384) ograničava ponašanje samo za radio-dugmiće na PDF 1.4 i diskriminiše na osnovu /FT = 'Btn'. Pravilo DeviceN /Subtype /NChannel prepoznaje PDF 1.6 NChannel fino podešavanje prostora boja zapisano u rečniku atributa na indeksu 4 DeviceN niza. Pravilo FontFile3 /Subtype /OpenType prepoznaje PDF 1.6 OpenType font programe kada se tok dosegne kroz ključ roditelja pod imenom 'FontFile3'. Pravilo Sig /SubFilter ETSI se aktivira za rečnike potpisa sa /SubFilter ETSI.CAdES.detached ili /SubFilter ETSI.RFC3161, oba PDF 1.7. Ovo je prvi skup SSOT callback funkcija koji se oslanja na kontekstnu svest o Ctx.KeyName. Tests.Version potvrđuje da su sva četiri pravila prisutna sa ispravnom MinVersion. Broj pravila je porastao sa 99 na 103

Ažuriranje validacije 3.18.6 dodaje kontekstno osetljiva /AA (dodatne akcije) pravila. /AA se pojavljuje u četiri PDF rečnika sa različitim minimalnim verzijama: Catalog /AA (okidači na nivou dokumenta, PDF 1.4), Annot /AA (okidači anotacije, PDF 1.4), Page /AA (okidači stranice, PDF 1.5) i Form field /AA (PDF 1.2, ispravno pod strogim PDF 1.2 ciljevima). Tri nova fmkCustom callbacka razlučuju po /Type, tako da /AA aktivira samo pravilo koje odgovara kontejneru na kojem se nalazi. Widget anotacija /AA (polje obrasca koje je i /Subtype /Widget anotacija) namerno aktivira granu Annot /AA u PDF 1.4; ovo je prihvatljiva aproksimacija jer svaki ugovor o snimanju od PDF 1.4 naviše već prihvata form-field /AA. Tests.Version potvrđuje da su sva tri kontekstualna /AA pravila prisutna. Broj pravila porastao je sa 96 na 99

Ažuriranje validacije 3.18.5 ispravlja pogrešnu klasifikaciju /Tabs pravila i dodaje /NeedAppearances pravilo. /Tabs (redosled tabova stranice) je ranije bio upisan u PDFFeatureRules na PDF 1.4, ali specifikacija promena Adobe PDF 1.4 (Technical Note #5409) ne uvodi /Tabs; unos postoji prvi put u PDF 1.5 Tabeli 8.10 (Page Object). Pravilo je sada u PDF 1.5 sekciji. Novo pravilo pokriva AcroForm /NeedAppearances (PDF 1.5 Table 218), koje pre ove izmene nije imalo prikaz u tabeli. Tests.Version potvrđuje da /Tabs nema PDF 1.4 unos i da je /NeedAppearances PDF 1.5 pravilo prisutno. Broj pravila porastao je sa 95 na 96

Ažuriranje validacije 3.18.1 proširuje skup bit-level pravila sa sedam callbacka za /Ff zastavicu polja obrazca i AcroForm /SigFlags AppendOnly bit. Tx FileSelect (1048576), Ch MultiSelect (2097152), Tx/Ch DoNotSpellCheck (4194304) i Tx DoNotScroll (8388608) prelaze na PDF 1.4; Tx Comb (16777216), Tx RichText / Btn RadiosInUnison (33554432), Ch CommitOnSelChange (67108864) i AcroForm SigFlags AppendOnly (mask 2) prelaze na PDF 1.5. /Parent nasledjivanje nije praćeno — samo rečnici koji eksplicitno nose /Ff ili /SigFlags aktiviraju pravila. Tests.Document pokriva Tx /Ff 16777220 primer (Comb + NoExport) koji podiže učitavač sa 1.4 na 1.5 i beleži Comb u ContributorFeatures

Ažuriranje validacije 3.18.0 počinje dodavanje podključeva i bit-level pravila u PDFFeatureRules. Tri pravila na nivou bitova anotacije pokrivaju /F mask vrednosti za Locked (128, PDF 1.4), ToggleNoView (256, PDF 1.5) i LockedContents (512, PDF 1.7); aktiviraju se samo kada je rečnik /Type /Annot. Šest novih fmkDictKey pravila pokriva prepoznatljive katalog i podključeve stranica: /BoxColorInfo (PDF 1.4), /Permissions, /Legal i /PresSteps (PDF 1.5), /VP (PDF 1.6) i /Collection (PDF 1.7). Tests.Document pokriva Annot /F 516 primer (Print + LockedContents) koji podiže učitavač sa 1.4 na 1.7 i prikazuje LockedContents u ContributorFeatures. Tests.Version potvrđuje da su nova pravila u tabeli

Ažuriranje validacije 3.17.0 proširuje writer-side EnsureMinVersion pokrivenost na još osam PDFlib ulaznih tačaka: AddLinkToJavaScript, SetOpenActionJavaScript, AddGlobalJavaScript i FormFieldJavaScriptAction (svi PDF 1.3); AddEmbeddedFile i AddFileAttachment (PDF 1.3); SetXFAFromString (PDF 1.5); AddSWFAnnotationFromFile (PDF 1.7). U kombinaciji sa početnim unosima v3.15.0 (SetTransparency, SetPageUserUnit, Encrypt, SetPageLayout), PDFlib sada automatski podiže FVersion kroz trinaest writer ulaznih tačaka visokih verzija. Tests.Document pokriva JS trojku (AddGlobalJavaScript, SetOpenActionJavaScript, AddLinkToJavaScript) koja automatski podiže novi dokument sa PDF 1.2 na PDF 1.3

Ažuriranje validacije 3.16.3 dodaje opcioni zaključak verzije. Nova PDFlib API funkcija LockSaveVersion(Version) zaključava FVersion na Version i sprečava Phase 3 writer-side EnsureMinVersion da ga povisi; UnlockSaveVersion uklanja zaključavanje. Vrata za vreme snimanja ostaju neizmenjena, pa zaključan dokument koji dobije karakteristiku više verzije kroz poziv pisca i dalje pada pri snimanju sa LastErrorCode 602. Tests.Document pokriva (a) zaključavanje na 1.3 + SetTransparency: FVersion ostaje na 1.3, AutoBumpedFeatures ostaje prazno, SaveToFile pada sa LastErrorCode 602; (b) zaključavanje na 1.6 + SetTransparency / SetPageUserUnit: oba poziva prolaze bez daljeg podizanja FVersion; (c) zaključavanje + SetTransparency (odbijeno) + Unlock + SetTransparency (dozvoljeno): FVersion se podiže na 1.4 i AutoBumpedFeatures beleži "transparency"

Ažuriranje validacije 3.16.2 dodaje pogled doprinosa samo za detekciju učitavanja. CollectMatchesForObject i DetectFeaturesInObjectTree sada uzimaju BaselineVersion parametar kako bi pozivi mogli da razdvoje pronađene karakteristike u "svako poklapanje" (DetectedFeatures, GetInformation 101) i "poklapanja čija je MinVersion strogo iznad baze" (ContributorFeatures, GetInformation 103). TPDFDocument.DetectVersionFromContent uzima HeaderVersion fajla kao bazu kako bi ContributorFeatures odgovorio na pitanje "zašto je efektivna verzija viša od doslovnog zaglavlja fajla". Tests.Document pokriva primer gde se /CA nalazi u DetectedFeatures ali isporučuje prazne ContributorFeatures (niti jedno pravilo nije podignuto iznad headera 1.4), i kombinovani primer gde se samo /UserUnit (1.6) pojavljuje u ContributorFeatures dok su /TrimBox (1.3) i /StructTreeRoot (1.4) filtrirani

Ažuriranje validacije 3.16.1 širi detekciju na strani učitavanja sa još šest sintetičkih primera i testova: transparentnost ExtGState na stranici (PDF 1.4 karakteristika bez podizanja jer je header već 1.4), Catalog /MarkInfo unos koji podiže PDF 1.3 na PDF 1.4, skup /OCProperties + OCG sadržaja koji podiže PDF 1.4 na PDF 1.5, /Type /3DStream objekat koji podiže PDF 1.5 na PDF 1.6, kombinovani primer više karakteristika koji potvrđuje da FVersion odražava najviši zahtevani minimum i da DetectedFeatures sadrži svaki doprinosni unos, i provera stabilnosti snimka koja potvrđuje da naknadni auto-bump writera pri učitavanju dospeva u AutoBumpedFeatures dok DetectedFeatures ostaje na snimku učitavanja

Ažuriranje validacije 3.16.0 dovršava plan usklađenosti PDF verzije sa detekcijom na strani učitavanja. Nakon LoadFromString / LoadFromFile / LoadFromStream, TPDFDocument.DetectVersionFromContent prolazi kroz svaki indirektni objekat kroz SSOT i podiže FVersion iznad literalne %PDF-X.Y vrednosti zaglavlja kada sadržaj zahteva višu verziju. Tri nova GetInformation ključa (100 = HeaderVersion, 101 = DetectedFeatures, 102 = AutoBumpedFeatures) izlažu dijagnostiku čitača i pisca. Tests.Document pokriva sintetički PageUserUnitFixture (header 1.4, page /UserUnit 2.0) koji učitavač podiže na 1.6 uz očuvanje HeaderVersion 1.4, plus primer novog dokumenta koji potvrđuje da su dijagnostički GetInformation ključevi prazni pre nego što se bilo šta učita

Ažuriranje validacije 3.15.0 vezuje PDFlib writer ulazne tačke (SetTransparency, SetPageUserUnit, Encrypt sa AES jačinama, SetPageLayout u dva načina dvostrane strane) kroz TPDFDocument.EnsureMinVersion tako da poziv karakteristike više verzije pri niskom ciljnom save targetu iz skupa SetInformation sada automatski podiže verziju dokumenta umesto vraćanja LastErrorCode 602 pri snimanju. Tests.Document pokriva novi tok "set 1.3, SetTransparency, FVersion postaje 1.4 i snimanje piše %PDF-1.4", ekvivalentne tokove za SetPageUserUnit i Encrypt(AES-256), i slučaj bez promene kada je pozivalac već odabrao verziju koja zadovoljava minimum pisca

Ažuriranje validacije 3.14.3 zatvara fazu 2 rada usklađenosti verzije dodavanjem preostalih PDF 1.6 3D tipova rečnika (/Type /3DStream /3DRef /3DBackground /3DRenderMode /3DLightingScheme /3DCrossSection /3DNode) i PDF 1.7 Redact i RichMedia i Projection podtipova anotacija zajedno sa /Type /Requirement i /ReqHandler pomoćnim rečnicima. Sa ovim PATCH-om SSOT sada pokriva od PDF 1.3 do PDF 1.7 karakteristike po poglavljima u jednoj tabeli minimalna-verzija → karakteristika

Ažuriranje validacije 3.14.2 proširuje skup pravila za usklađenost verzije da prepozna PDF 1.5 karakteristike: /XFA obrasci, /AlternatePresentations, name tree /Renditions, rečnik /Type /Rendition /MediaCriteria /MediaPermissions /MediaPlayers multimedija, i podtip anotacija Screen

Ažuriranje validacije 3.14.1 proširuje skup pravila usklađenosti verzije da prepozna PDF 1.4 karakteristike: /StructTreeRoot, /MarkInfo i StructElem rečnike (tagovani PDF), ulaz page /Tabs i document /Lang, /StructParent i /StructParents reference, /OutputIntents i /OutputIntent rečnike, /UR3 potpis sa pravima korišćenja, i PDF 1.4 anotacione podtipove Polygon, PolyLine, Caret, Ink, Popup i Watermark. Tests.Document pokriva nove putanje "save as PDF 1.3 rejects /StructTreeRoot" i "save as PDF 1.4 keeps /StructTreeRoot"

Ažuriranje validacije 3.14.0 proširuje skup pravila usklađenosti verzije da prepozna PDF 1.3 karakteristike (glatko sjenčanje i funkcionišući rečnici, ICCBased i DeviceN prostori boja, TrimBox/BleedBox/ArtBox unosi stranice, /ToUnicode CMaps, prilog fajla / Sound / Movie anotacije, /Type /Filespec i /Type /EmbeddedFile rečnici, /Group /EF /Alternates /Mask ključevi i JavaScript akcije). Verzija 3.23.0 zamenjuje ranije PDF 1.2 toleranciju kompatibilnosti strožom PDF 1.2 kapijom. Tests.Document sada pokriva strogo odbijanje PDF 1.2 za podatke PDF 1.3 TrimBox i zaključani append-save preflight verzije

Ažuriranje validacije 3.13.0 zadržava isto ponašanje odbijanja snimanja izvan verzije kao i 3.12.7 (LastErrorCode 602) dok premešta skup pravila u zasebnu jedinicu Lib\PDFlibVersion.pas i dodaje Tests.Version DUnitX fixture koji potvrđuje da tabela pravila sadrži osnovne v3.12.6 pravila i da pomoćne funkcije verzije vraćaju tačno u oba smera

Validaciona matrica 3.12.0 uključuje build-zlib-bcc32, build-zlib-bcc64x, build-zlib-vc64, build-jpeg-bcc32 i build-jpeg-vc64, svaki završavajući bez neuspelih objekata. Verifikovane su i build verzije biblioteka build-Win32-Lib.cmd 37.0 i build-Win64-Lib.cmd 37.0

Aktuelni Delphi DUnitX setovi prošli su 362 od 362 testova na Win32 i 362 od 362 testova na Win64. Pokrivena područja uključuju kruženje kompresije, poznato raspakivanje zlib strimova, terete na granici veličine, trajne višeblokovne strimove, HelloWorld /FlateDecode izlaz, JPEG i PNG prikaz, uvoz i izvoz slika, fontove, obrasce, enkripciju, dekripciju, potpisivanje, PAdES atribute, štampanje, Unicode pomoćne funkcije, bafere, crtanje na platnu, stranice, tabele, tokove dokumenata, parsiranje sintakse/xref, stroge PDF 1.2 ugovore snimanja, append-save preflight verzije, PDF 1.7 ekstenzijsko usklađivanje, PDF/UA dijagnostiku i generisanje/poređenje preflight izveštaja

Trenutni C++Builder Win64x GoogleTest set prošao je 61 test i preskočio 2 postojeća uzorka zavisna testa. Pokriva tokove izvedene iz demo primera i zlib-ng poznate strimove, terete na granici veličine, PNG slične skrej linije, višeblokovne kružne obrade, rukovanje slikama, izlaz renderovanja uključujući direct-access PdfToImage pokrivanje, enkripciju, potpisivanje, štampanje, stroge PDF 1.2 ugovore snimanja, PDF 1.7 izlaz nivoa ekstenzije i HelloWorld provere kompresovanog izlaza koji potvrđuju bcc64x zlib-ng skup objekata kroz C++Builder ABI

HTML referenca je zaštićena kroz tools/test_docs_api_coverage.py, koji proverava da svaka javna TPDFlib funkcija ima englesku referentnu stranu, i kroz tools/test_docs_navigation.py, koji održava usaglašenost meta-odredišta multijezičnog dnevnika promena u okviru uokvirene pomoći

Readme.html i HTML reference treba da ostanu usklađeni kada se promeni ponašanje validacije, preflight-a, renderovanja, potpisivanja ili generisanja izveštaja vidljivo korisniku