Automatizované validačné pokrytie

Aktualizácia správy o preflight v verzii 3.56.37 pridáva zdokumentovanú automatizovanú cestu nad existujúcimi kontrolami súladu pre PDF/A a PDF/UA-1. Delphi ukážka PreflightReport teraz pokrýva samostatné súbory, dávkové priečinky, výstup vo formáte textu/JSON/HTML/CSV, súbory basline uložené v UTF-8 a porovnanie textového základu cez ComparePreflightReports. Tests.Preflight overuje sekcie správ, strojovo čitateľný JSON, samostatný HTML, riadky CSV, zápis v UTF-8 a porovnávanie časových pečiatok

Rozsah PDF/UA auditov od verzie 3.56.0 po 3.56.25 rozširuje diagnostiku čítania a zápisu okolo metadát PDF/UA-1, MarkInfo, RoleMap, práv prístupnosti šifrovania, XFA, referencovaných XObjects, tabuľkových a popisných vlastností anotácií, názvov FileSpec, konfiguračných slovníkov OCG, vkladania fontov a kódovania TrueType, poradia nadpisov, číslovania zoznamov, poznámok ID a opakovaných priamych detí H. Nízkoúrovňovú cestu čítania sprístupňuje CheckFileCompliance, pričom zápisovo-orientovanú cestu v pamäti sprístupňuje GetPDFUADiagnostics

V práci PAdES 3.56.x pribudli testy a referenčné pokrytie pre voľbu hash algoritmov, autentifikačné atribúty PAdES-B-B, IssuerSerial podpisu certifikátu signing-certificate-v2, doplnenie časovej pečiatky podpisu, zostavenie DSS/VRI, indikáciu typu záväzku a atribúty podpisovej politiky. Tieto kontroly pokrývajú testy podpisovania a špeciálne referenčné stránky bezpečnosti a podpisov

Aktualizácia PDF validácie 3.23.0 sprísňuje bránu pre zhodu verzie dokumentu pre PDF 1.2 a pridáva kontroly rozšírení Adobe úrovne pre PDF 1.7. Výstupné ciele PDF 1.2 teraz odmietnu funkcie PDF 1.3+ ako napríklad dáta TrimBox stránky ešte pred zápisom. AESV3, AES-256, RichMedia, geodetické slovníky a podfiltre podpisu ETSI sa overujú proti požadovanému vyhláseniu /Extensions /ADBE /ExtensionLevel. Vstupy zapisovacej stránky, ktoré emituje takéto položky rozšírenia, teraz automaticky deklarujú zodpovedajúcu úroveň rozšírenia ADBE a ukladanie append prechádza rovnakým preflight procesom ako úplný ukladací chod. Tests.Document, Tests.Version a C++Builder test VersionCompliance pokrývajú striktne odmietnutie PDF 1.2, výstup AES-256 ExtensionLevel, append-save preflight a pravidlá SSOT pre úroveň rozšírenia

Aktualizácia PDF validácie 3.20.0 rozširuje writer-side cestu EnsureMinVersion na osem ďalších vstupov PDFlib: SetDocumentMetadata (PDF 1.4 — prúd /Metadata XMP), SetPDFAMode (PDF 1.4 — /MarkInfo a /OutputIntents), PageJavaScriptAction (PDF 1.5 — stránka /AA), DocJavaScriptAction (PDF 1.4 — katalóg /AA), SetTabOrderMode (PDF 1.5 — stránka /Tabs), NewOptionalContentGroup (PDF 1.5 — /Type /OCG), SetNeedAppearances (PDF 1.5 — AcroForm /NeedAppearances), a NewFormField pre podpisové polia (PDF 1.5 — bit AppendOnly v /SigFlags). Spolu s položkami z v3.15.0 pokrýva PDFlib teraz automatické zdvihnutie FVersion cez dvadsaťjeden writer vstupov. NewOptionalContentGroup predtým zvyšoval FVersion priamo, obchádzajúc EnsureMinVersion a LockSaveVersion; teraz používa správnu cestu, takže zámok je dodržaný a navýšenie sa objaví v AutoBumpedFeatures. Tests.Document pokrýva šesť nových prípadov automatického navýšenia

Aktualizácia validácie 3.19.0 zavádza štyri odložené pravidlá SSOT. Príznak /Ff tlačidla Btn bit 15 NoToggleToOff (maska 16384) obmedzuje správanie len na radio tlačidlá a rozlišuje podľa /FT = 'Btn'. Pravidlo DeviceN /Subtype /NChannel rozpoznáva spracovanie v PDF 1.6 pri poli atribútového slovníka na indexe 4 poľa DeviceN. Pravidlo FontFile3 /Subtype /OpenType rozpoznáva fontové programy PDF 1.6 OpenType, keď je prúd dosiahnutý cez kľúč rodiča FontFile3. Pravidlo Sig /SubFilter ETSI sa aktivuje pre slovníky podpisu s /SubFilter ETSI.CAdES.detached alebo /SubFilter ETSI.RFC3161, obe podľa PDF 1.7. Toto je prvá sada SSOT callbackov závislých od kontextu Ctx.KeyName. Tests.Version overuje, že sú prítomné všetky štyri pravidlá s korektnou minimálnou verziou. Počet pravidiel vzrástol z 99 na 103

Aktualizácia validácie 3.18.6 pridáva kontextovo citlivé pravidlá /AA. /AA sa vyskytuje v štyroch typoch PDF slovníkov s rôznymi minimálnymi verziami: Catalog /AA (spúštače dokumentovej úrovne, PDF 1.4), Annot /AA (spúštače anotácií, PDF 1.4), Page /AA (spúštače stránky, PDF 1.5) a Form field /AA (PDF 1.2, platné pre striktne PDF 1.2 ciele). Tri nové fmkCustom spätné volania rozlišujú podľa /Type, takže /AA spúšťa iba pravidlo zodpovedajúce kontejneru kde sa vyskytuje. Widget anotácia / typ /Subtype /Widget cielená cez /AA sa úmyselne spracúva vetvou Annot /AA vo PDF 1.4, čo je prijateľná aproximácia pretože každý zápis pre PDF 1.4+ už spracováva /AA na úrovni formulára. Tests.Version overuje prítomnosť všetkých troch kontextových pravidiel

Aktualizácia validácie 3.18.5 opravuje zlé zaradenie pravidla /Tabs a pridáva pravidlo /NeedAppearances. /Tabs bol predtým v PDFFeatureRules vedený ako PDF 1.4, no špecifikácia zmien PDF 1.4 (Technical Note #5409) zavedenie /Tabs neobsahuje; prvá deklarácia je v PDF 1.5, tabuľka 8.10 (objekt stránky). Pravidlo je preto presunuté do sekcie PDF 1.5. Nové pravidlo pokrýva AcroForm /NeedAppearances (PDF 1.5, tabuľka 218), ktorý predtým v tabuľke nebol. Tests.Version overuje, že /Tabs nemá položku pre PDF 1.4 a že PDF 1.5 pravidlo /NeedAppearances je prítomné. Počet pravidiel vzrástol z 95 na 96

Aktualizácia validácie 3.18.1 rozširuje pravidlá na úroveň bitov o sedem príznakov formového poľa /Ff a bit SigFlags AppendOnly v AcroForm. Tx FileSelect (1048576), Ch MultiSelect (2097152), Tx/Ch DoNotSpellCheck (4194304) a Tx DoNotScroll (8388608) sa presúvajú na PDF 1.4; Tx Comb (16777216), Tx RichText, Btn RadiosInUnison (33554432), Ch CommitOnSelChange (67108864) a AcroForm SigFlags AppendOnly (mask 2) na PDF 1.5. Správanie /Parent dedičnosti sa neskúma, spúšťajú sa len explicitne prítomné slovníky s /Ff alebo /SigFlags. Tests.Document pokrýva prípad Tx /Ff 16777220 (Comb + NoExport) ktorý zvyšuje nacitávaciu verziu z 1.4 na 1.5 a uvádza Comb v ContributorFeatures

Aktualizácia validácie 3.18.0 začína pridávať pod-kľúčové a bitové pravidlá do PDFFeatureRules. Tri pravidlá na bitových príznakoch anotácie pokrývajú masky Locked (128, PDF 1.4), ToggleNoView (256, PDF 1.5) a LockedContents (512, PDF 1.7); platia len pre slovník s /Type /Annot. Šesť nových pravidiel fmkDictKey pokrýva špecifické pod-kľúče katalógu a stránky: /BoxColorInfo (PDF 1.4), /Permissions, /Legal a /PresSteps (PDF 1.5), /VP (PDF 1.6) a /Collection (PDF 1.7). Tests.Document pokrýva prípad Annot /F 516 (Print + LockedContents) ktorý zdvihne loader z 1.4 na 1.7 a uvádza LockedContents v ContributorFeatures. Tests.Version potvrdzuje, že nové pravidlá sú v tabuľke

Aktualizácia validácie 3.17.0 rozširuje cestu EnsureMinVersion na osem ďalších writer vstupov PDFlib: AddLinkToJavaScript, SetOpenActionJavaScript, AddGlobalJavaScript a FormFieldJavaScriptAction (všetko PDF 1.3), AddEmbeddedFile a AddFileAttachment (PDF 1.3), SetXFAFromString (PDF 1.5), AddSWFAnnotationFromFile (PDF 1.7). Spolu s pôvodnými položkami v3.15.0 (SetTransparency, SetPageUserUnit, Encrypt, SetPageLayout) má PDFlib teraz automatický bump FVersion cez trinásť writer vstupov vysokej verzie. Tests.Document pokrýva JavaScript trojicu (AddGlobalJavaScript, SetOpenActionJavaScript, AddLinkToJavaScript) ktorá zvyšuje novú dokumentovú verziu z PDF 1.2 na PDF 1.3

Aktualizácia validácie 3.16.3 pridáva voliteľný zámok verzie zápisu. Nové PDFlib API LockSaveVersion(Version) nastaví FVersion na danú verziu a zastaví zvyšovanie FVersion v writer-ceste Phase 3 EnsureMinVersion; UnlockSaveVersion tento zámok ruší. Testovanie ukladania zostáva nemenené, takže uzamknutý dokument, ktorý dostane vyššiu verziu cez writer volanie, stále zlyhá pri uložení s LastErrorCode 602. Tests.Document pokrýva (a) zámok na 1.3 + SetTransparency: FVersion ostáva 1.3, AutoBumpedFeatures je prázdne, SaveToFile končí s LastErrorCode 602; (b) zámok na 1.6 + SetTransparency / SetPageUserUnit: obidve volania prebehnu bez ďalšieho zdvihu; (c) zámok + SetTransparency (odmietnuté) + Unlock + SetTransparency (povolené): FVersion sa zvýši na 1.4 a AutoBumpedFeatures obsahuje „transparency“

Aktualizácia validácie 3.16.2 dopĺňa pohľad „prispievateľov“ pre detekciu vlastností načítania. CollectMatchesForObject a DetectFeaturesInObjectTree získali parameter BaselineVersion, aby volajúci mohol rozdeliť výsledky na „všetky zhody“ (DetectedFeatures, GetInformation 101) a „zhody nad základnou verziou“ (ContributorFeatures, GetInformation 103). TPDFDocument.DetectVersionFromContent predáva hlavičku súboru z HeaderVersion ako baseline, takže ContributorFeatures odpovie prečo je efektívna verzia vyššia než literálna hlavička súboru. Tests.Document pokrýva prípad kde /CA je v DetectedFeatures, no ContributorFeatures je prázdne (žiadne pravidlo nad 1.4), a kombinovaný prípad kde sa v ContributorFeatures objaví len /UserUnit (1.6) zatiaľ čo /TrimBox (1.3) a /StructTreeRoot (1.4) sú odfiltrované

Aktualizácia validácie 3.16.1 rozširuje detekciu loader-side šiestimi ďalšími syntetickými prípadmi a testami: priehľadnosť ExtGState na stránke (funkcia PDF 1.4 bez zdvihu, pretože hlavička je už 1.4), položka katalógu /MarkInfo zvyšujúca PDF 1.3 na 1.4, sada /OCProperties + OCG obsahujúca obsah, ktorý zvyšuje PDF 1.4 na 1.5, typ objektu /Type /3DStream zvyšujúci PDF 1.5 na 1.6, kombinovaný fixture potvrdzujúci, že FVersion odráža najvyššiu požadovanú hodnotu a DetectedFeatures vypisuje každý prispievajúci záznam, a test stability snímok preukazujúci, že auto-zdvíhanie po writer-e po načítaní sa zapíše do AutoBumpedFeatures pričom DetectedFeatures ostáva na záťaži načítania

Aktualizácia validácie 3.16.0 dokončuje plán PDF version compliance na úrovni načítania. Po LoadFromString / LoadFromFile / LoadFromStream prechádza TPDFDocument.DetectVersionFromContent každý nepriamy objekt cez SSOT a zvýši FVersion nad literálnu hlavičku %PDF-X.Y, keď obsah vyžaduje vyššiu verziu. Tři nové kľúče GetInformation (100 = HeaderVersion, 101 = DetectedFeatures, 102 = AutoBumpedFeatures) exponujú diagnostiku načítania aj zápisu. Tests.Document pokrýva syntetický prípad PageUserUnitFixture (hlavička 1.4, stránka /UserUnit 2.0) ktorý loader zdvihne na 1.6 so zachovaním HeaderVersion 1.4, plus prázdny prípad nového dokumentu kde diagnostika je prázdna pred načítaním

Aktualizácia validácie 3.15.0 prepája writer vstupy PDFlib (SetTransparency, SetPageUserUnit, Encrypt so silou AES, SetPageLayout dvojstránkový mód) cez TPDFDocument.EnsureMinVersion tak, aby volanie vysokej verzie na nízkej cieľovej verzii už nespôsobilo LastErrorCode 602 pri ukladaní, ale automaticky zvýšilo dokumentovú verziu. Tests.Document pokrýva nový tok „set 1.3, SetTransparency, FVersion sa stáva 1.4 a Save zapisuje %PDF-1.4“, ekvivalentné cesty pre SetPageUserUnit a Encrypt(AES-256), a prípad bez zmeny, kde volajúci už vybral verziu spĺňajúcu minimum writer vstupu

Aktualizácia validácie 3.14.3 uzatvára fázu 2 práce na PDF 1.6/1.7 pomocou doplnenia zostávajúcich typov slovníkov 3D objektov: /Type /3DStream, /3DRef, /3DBackground, /3DRenderMode, /3DLightingScheme, /3DCrossSection, /3DNode, pridáva PDF 1.7 subtypy Redact a RichMedia a PDF 1.7 podtyp Projection anotácií, spolu s /Type /Requirement a sprievodným slovníkom /ReqHandler. V tomto PATCH má SSOT pokrytie PDF 1.3 až 1.7 na úrovni čísel štandardu v jednej tabuľke

Aktualizácia validácie 3.14.2 rozširuje pravidlá zlučiteľnosti verzií o PDF 1.5 vlastnosti: /XFA formuláre, /AlternatePresentations, strom názvov /Renditions, a slovníky /Type /Rendition, /MediaCriteria, /MediaPermissions, /MediaPlayers + štýly Screen anotácií

Aktualizácia validácie 3.14.1 rozširuje pravidlá zlučiteľnosti verzií o PDF 1.4 vlastnosti: /StructTreeRoot, /MarkInfo a StructElem slovníky (tagované PDF), Page /Tabs a dokument /Lang, /StructParent a /StructParents referencie, /OutputIntents a /OutputIntent, podpis /UR3, a podtypy anotácií PDF 1.4 Polygon, PolyLine, Caret, Ink, Popup a Watermark. Tests.Document pokrýva novú cestu „save as PDF 1.3 odmietne /StructTreeRoot“ a „save as PDF 1.4 zachová /StructTreeRoot“

Aktualizácia validácie 3.14.0 rozširuje pravidlá zlučiteľnosti verzií o funkcie PDF 1.3: hladké šrafovanie a funkčné slovníky, ICCBased a DeviceN farebné priestory, položky TrimBox / BleedBox / ArtBox na stránkach, /ToUnicode CMaps, prílohy súborov /Sound a /Movie anotácií, slovníky /Type /Filespec a /Type /EmbeddedFile, kľúče /Group, /EF, /Alternates a /Mask, a JavaScript akcie. Verzia 3.23.0 nahrádza predchádzajúcu toleranciu kompatibility PDF 1.2 prísnym bránikom pre PDF 1.2. Tests.Document teraz pokrýva prísny odmietací test PDF 1.2 pre PDF 1.3 dáta TrimBox a uzamknuté append-save preflight

Aktualizácia validácie 3.13.0 zachováva rovnaké správanie odmietania ukladania mimo verzie ako 3.12.7 (LastErrorCode 602) a presúva sadzbu pravidiel do samostatnej jednotky Lib\PDFlibVersion.pas a pridáva DUnitX test Tests.Version, ktorý overuje, že tabuľka obsahuje pravidlá z 3.12.6 baseline a helpery verzií sa vracajú korektne pri konverzii reťazcov

Matica validácie 3.12.0 zahŕňa build-zlib-bcc32, build-zlib-bcc64x, build-zlib-vc64, build-jpeg-bcc32 a build-jpeg-vc64, každá so stavom 0 zlyhaní. Buildy knižnice boli overené aj cez build-Win32-Lib.cmd 37.0 a build-Win64-Lib.cmd 37.0

Aktuálny Delphi DUnitX balík prešiel 362 testami z 362 na Win32 a 362 testami z 362 na Win64. Zahŕňa okruhy kompresných cyklov, známych dekódovaní zlib prúdov, hranicové veľkosti dát, uložení viacblokové prúdy, výstup /FlateDecode HelloWorld, import a export obrázkov, písma, šifrovanie, dešifrovanie, podpisovanie, atribúty PAdES, tlač, Unicode nástroje, buffery, kreslenie plátna, stránky, tabuľky, workflow dokumentu, parsovanie syntaxu/xref, striktné PDF 1.2 ukladanie, append-save kontrolu verzie, kontrolu prípadov rozšírení PDF 1.7, diagnostiku PDF/UA a generovanie/preporúčanie preflight reportu

Aktuálny C++Builder Win64x GoogleTest balík prešiel 61 testami a preskočil 2 existujúce testy závislé od vzoriek. Pokrýva workflow odvodené z demo spolu so zlib-ng známymi streamami, hranicové veľkosti dát, PNG-like skenové dáta, multiblokové ukladanie v prúde, spracovanie obrazov, renderovacie pokrytie vrátane PdfToImage prístupu, šifrovanie, podpisovanie, tlač, prísnu kontrolu ukladania PDF 1.2, kompatibilný output PDF 1.7, append-save preflight verzie a kontroly komprimovaných HelloWorld výstupov, čo overuje sadu objektov zlib-ng pre bcc64x ABI

HTML reference je chránené tools/test_docs_api_coverage.py, ktoré overuje prítomnosť en-us referenčnej stránky pre každú verejnú funkciu TPDFlib, a tools/test_docs_navigation.py, ktoré drží konzistenciu navigácie changelogu naprieč jazykovými rámcami v rámových pomocníkoch

Readme.html a HTML reference by mali zostať zarovnané vždy, keď sa menia verejné validačné, preflight, vykresľovacie, podpisovacie alebo reportovacie správanie