Automated Validation Coverage

Aktualizace preflight zprávy 3.56.37 přidává zdokumentovanou cestu automatizace na stávající kontroly souborů PDF/A a PDF/UA-1. Demo Delphi PreflightReport nyní pokrývá zprávy pro jeden soubor, dávky adresářů, výstup text/JSON/HTML/CSV, soubory CSV souhrnů UTF-8 a porovnání základní linie v čistém textu přes ComparePreflightReports. Tests.Preflight ověřuje sekce zpráv, strojově čitelné JSON, samostatný HTML, řádky CSV, výstup ukládání UTF-8, řádky diff a normalizaci časových razítek

Série auditů PDF/UA 3.56.0 až 3.56.25 rozšiřuje diagnostiku čtenáře a zapisovače kolem metadat PDF/UA-1, MarkInfo, RoleMap, oprávnění dostupnosti šifrování, XFA, Reference XObject, pořadí pro tabulátor a popisů anotací, názvů FileSpec, slovníků konfigurace OCG, vkládání fontů a kódování TrueType, pořadí nadpisů, číslování seznamů, ID poznámek, mediálních klipů a opakovaných přímých potomků H. Cesta čtenáře na nízké úrovni je vystavena přes CheckFileCompliance; cesta v paměti na straně zapisovače je vystavena přes GetPDFUADiagnostics

Validační práce PAdES 3.56.x přidává testy a referenční pokrytí pro výběr digestu, ověřené atributy PAdES-B-B, IssuerSerial podpisového certifikátu-v2, rozšíření podpisového časového razítka, sestavení DSS/VRI, indikaci typu závazku a atributy politiky podpisu. Tyto kontroly pokrývají testy podpisování a dedikované referenční stránky PAdES pod Security and Signatures

Validační aktualizace 3.23.0 dělá bránu shody verzí PDF striktní pro PDF 1.2 a přidává kontroly na úrovni rozšíření Adobe pro PDF 1.7. Ukládající cíle PDF 1.2 nyní odmítají funkce PDF 1.3+, jako jsou data TrimBox stránek, dřív, než se zapíše výstup. AESV3, AES-256, RichMedia, Projection, geoprostorové slovníky a podfiltry podpisů ETSI se kontrolují proti požadované deklaraci /Extensions /ADBE /ExtensionLevel. Vstupní body zapisovače, které vysílají tyto funkce na úrovni rozšíření, nyní automaticky deklarují odpovídající úroveň rozšíření ADBE a přidávací ukládání provádějí stejný preflight jako plná ukládání. Tests.Document, Tests.Version a fixtura Tests.VersionCompliance C++Builderu pokrývají striktní odmítnutí PDF 1.2, výstup ExtensionLevel AES-256, preflight přidávacího ukládání a pravidla SSOT na úrovni rozšíření

Validační aktualizace 3.20.0 rozšiřuje pokrytí zapisovacího EnsureMinVersion na osm dalších vstupních bodů PDFlib: SetDocumentMetadata (PDF 1.4 — proud XMP /Metadata), SetPDFAMode (PDF 1.4 — /MarkInfo a /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) a NewFormField pro podpisová pole (PDF 1.5 — bit AcroForm /SigFlags AppendOnly). Kombinováno se záznamy v3.15.0 a v3.17.0, PDFlib nyní automaticky zvyšuje FVersion napříč jednadvaceti vstupními body zapisovače. NewOptionalContentGroup dřív zvyšovala FVersion přímo, obcházela EnsureMinVersion a LockSaveVersion; teď směřuje správnou cestou, takže zámek je respektován a zvýšení se objeví v AutoBumpedFeatures. Tests.Document pokrývá šest nových případů automatického zvýšení (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 podpis 1.3 → 1.5)

Validační aktualizace 3.19.0 implementuje čtyři dříve odložená pravidla SSOT. Příznak Btn pole /Ff bit 15 NoToggleToOff (maska 16384) braní chování jen pro radiotlačítka k PDF 1.4 a diskriminuje podle /FT = 'Btn'. Pravidlo DeviceN /Subtype /NChannel rozpozná upřesnění barevného prostoru NChannel z PDF 1.6 kódované ve slovníku atributů na indexu 4 pole DeviceN. Pravidlo FontFile3 /Subtype /OpenType rozpozná fontové programy OpenType PDF 1.6, když se proud dosáhne rodičovským klíčem nazvaným 'FontFile3'. Pravidlo Sig /SubFilter ETSI se spustí na slovnících podpisů s /SubFilter ETSI.CAdES.detached nebo /SubFilter ETSI.RFC3161, obojí PDF 1.7. To je první sada zpětných volání SSOT spoléhající na povědomí o kontextu Ctx.KeyName. Tests.Version tvrdí, že všechna čtyři pravidla jsou přítomna se správnou MinVersion. Počet pravidel vzrostl z 99 na 103

Validační aktualizace 3.18.6 přidává pravidla /AA (další akce) citlivá na kontext. /AA se objevuje ve čtyřech kontejnerech slovníků PDF s různými minimálními verzemi: Catalog /AA (spouštěče na úrovni dokumentu, PDF 1.4), Annot /AA (spouštěče anotací, PDF 1.4), Page /AA (spouštěče stránky, PDF 1.5) a pole formuláře /AA (PDF 1.2, platné pod striktními cíli PDF 1.2). Tři nová zpětná volání fmkCustom diskriminují podle /Type, takže /AA spustí jen pravidlo odpovídající kontejneru, na kterém sedí. Widget anotace /AA (pole formuláře, které je zároveň anotací /Subtype /Widget) záměrně spustí větev Annot /AA na PDF 1.4; to je akceptovaná aproximace, protože každá ukládající smlouva od PDF 1.4 výš už akceptuje /AA pole formuláře. Tests.Version tvrdí, že všechna tři kontextová pravidla /AA jsou přítomna. Počet pravidel vzrostl z 96 na 99

Validační aktualizace 3.18.5 opravuje chybnou klasifikaci pravidla /Tabs a přidává pravidlo /NeedAppearances. /Tabs (pořadí pro tabulátor stránek) bylo dřív uváděno pod PDF 1.4 v PDFFeatureRules, ale specifikace změn Adobe PDF 1.4 (Technical Note #5409) nezavádí /Tabs; položka se poprvé zavádí v PDF 1.5 Table 8.10 (Page Object). Pravidlo teď sídlí v sekci PDF 1.5. Nové pravidlo pokrývá AcroForm /NeedAppearances (PDF 1.5 Table 218), které nemělo v tabulce žádné zastoupení před touto aktualizací. Tests.Version tvrdí, že /Tabs nemá žádnou položku PDF 1.4 a že pravidlo /NeedAppearances PDF 1.5 je přítomno. Počet pravidel vzrostl z 95 na 96

Validační aktualizace 3.18.1 rozšiřuje sadu bitových pravidel o sedm zpětných volání příznaků /Ff polí formulářů a bit AcroForm /SigFlags AppendOnly. Tx FileSelect (1048576), Ch MultiSelect (2097152), Tx/Ch DoNotSpellCheck (4194304) a Tx DoNotScroll (8388608) se braní k PDF 1.4; Tx Comb (16777216), Tx RichText / Btn RadiosInUnison (33554432), Ch CommitOnSelChange (67108864) a AcroForm SigFlags AppendOnly (maska 2) se braní k PDF 1.5. Dědičnost /Parent se nesleduje — pravidla spouštějí jen slovníky, které explicitně nesou /Ff nebo /SigFlags. Tests.Document pokrývá fixturu Tx /Ff 16777220 (Comb + NoExport) zvyšující čtenáře z 1.4 na 1.5 a vypisující Comb v ContributorFeatures

Validační aktualizace 3.18.0 začíná přidávat pravidla sub-klíčů a bitové úrovně do PDFFeatureRules. Tři bitové pravidla příznaků anotací pokrývají hodnoty masky /F pro Locked (128, PDF 1.4), ToggleNoView (256, PDF 1.5) a LockedContents (512, PDF 1.7); spouštějí se jen tehdy, když je slovník /Type /Annot. Šest nových pravidel fmkDictKey pokrývá charakteristické sub-klíče katalogu a stránek: /BoxColorInfo (PDF 1.4), /Permissions, /Legal a /PresSteps (PDF 1.5), /VP (PDF 1.6) a /Collection (PDF 1.7). Tests.Document pokrývá fixturu Annot /F 516 (Print + LockedContents) zvyšující čtenáře z 1.4 na 1.7 a vypisující LockedContents v ContributorFeatures. Tests.Version tvrdí, že nová pravidla jsou v tabulce

Validační aktualizace 3.17.0 rozšiřuje pokrytí zapisovacího EnsureMinVersion na osm dalších vstupních bodů PDFlib: AddLinkToJavaScript, SetOpenActionJavaScript, AddGlobalJavaScript a FormFieldJavaScriptAction (vše PDF 1.3); AddEmbeddedFile a AddFileAttachment (PDF 1.3); SetXFAFromString (PDF 1.5); AddSWFAnnotationFromFile (PDF 1.7). Kombinováno s původními záznamy v3.15.0 (SetTransparency, SetPageUserUnit, Encrypt, SetPageLayout), PDFlib nyní automaticky zvyšuje FVersion napříč třinácti vstupními body zapisovače s vysokou verzí. Tests.Document pokrývá JavaScriptovou trojici (AddGlobalJavaScript, SetOpenActionJavaScript, AddLinkToJavaScript) automaticky zvyšující čerstvý dokument z PDF 1.2 na PDF 1.3

Validační aktualizace 3.16.3 přidává verzový zámek po volbě. Nové API PDFlib LockSaveVersion(Version) přichytí FVersion na Version a zastaví zapisovací EnsureMinVersion fáze 3, aby jej nezvyšovalo; UnlockSaveVersion zámek zruší. Brána v čase ukládání se nemění, takže zamčený dokument, který získá funkci vyšší verze skrze volání zapisovače, stále selže při ukládání s LastErrorCode 602. Tests.Document pokrývá (a) zámek na 1.3 + SetTransparency: FVersion zůstává 1.3, AutoBumpedFeatures zůstává prázdná, SaveToFile selže s LastErrorCode 602; (b) zámek na 1.6 + SetTransparency / SetPageUserUnit: obě volání uspějí, aniž by dále zvýšila FVersion; (c) zámek + SetTransparency (odmítnuto) + Unlock + SetTransparency (dovoleno): FVersion se zvýší na 1.4 a AutoBumpedFeatures zaznamená "transparency"

Validační aktualizace 3.16.2 přidává pohled jen pro přispěvatele k detekci funkcí v čase načtení. CollectMatchesForObject a DetectFeaturesInObjectTree nyní berou parametr BaselineVersion, takže volající mohou rozdělit shodné funkce na "každou shodu" (DetectedFeatures, GetInformation 101) a "shody, jejichž MinVersion je striktně nad základní linií" (ContributorFeatures, GetInformation 103). TPDFDocument.DetectVersionFromContent dodává HeaderVersion souboru jako základní linii, takže ContributorFeatures odpovídá na "proč je účinná verze vyšší než doslovné záhlaví souboru?". Tests.Document pokrývá fixturu, která vypisuje /CA v DetectedFeatures, ale produkuje prázdnou ContributorFeatures (žádné pravidlo neposlalo nad záhlaví 1.4), a kombinovanou fixturu, kde se v ContributorFeatures objeví jen /UserUnit (1.6), zatímco /TrimBox (1.3) a /StructTreeRoot (1.4) se odfiltrují

Validační aktualizace 3.16.1 rozšiřuje pokrytí detekce na straně čtenáře o šest dalších syntetických fixtur a testů: ExtGState průhlednosti na stránce (funkce PDF 1.4 bez zvýšení, protože záhlaví už je 1.4), položka Catalog /MarkInfo zvyšující PDF 1.3 na PDF 1.4, sada obsahu /OCProperties + OCG zvyšující PDF 1.4 na PDF 1.5, objekt /Type /3DStream zvyšující PDF 1.5 na PDF 1.6, fixtura kombinace více funkcí potvrzující, že FVersion odráží nejvyšší požadované minimum a DetectedFeatures vypisuje každý přispívající záznam, a kontrola stability snímku potvrzující, že automatická zvýšení zapisovače po načtení dopadnou do AutoBumpedFeatures, zatímco DetectedFeatures zůstává na snímku z času načtení

Validační aktualizace 3.16.0 dokončuje plán shody verzí PDF detekcí na straně čtenáře. Po LoadFromString / LoadFromFile / LoadFromStream projde TPDFDocument.DetectVersionFromContent každý nepřímý objekt skrze SSOT a zvýší FVersion nad doslovnou hodnotou záhlaví %PDF-X.Y, když obsah vyžaduje vyšší verzi. Tři nové klíče GetInformation (100 = HeaderVersion, 101 = DetectedFeatures, 102 = AutoBumpedFeatures) vystavují diagnostiku čtenáře a zapisovače. Tests.Document pokrývá syntetickou PageUserUnitFixture (záhlaví 1.4, stránka /UserUnit 2.0), kterou čtenář zvýší na 1.6 při zachování HeaderVersion 1.4, plus případ čerstvého dokumentu potvrzující, že diagnostické klíče GetInformation jsou prázdné, než dojde k jakémukoli načtení

Validační aktualizace 3.15.0 propojuje vstupní body zapisovače PDFlib (SetTransparency, SetPageUserUnit, Encrypt se silami AES, dvoustránkové režimy SetPageLayout) skrze TPDFDocument.EnsureMinVersion, takže volání funkce s vysokou verzí při nízkém ukládajícím cíli SetInformation nyní automaticky zvýší verzi dokumentu místo výroby LastErrorCode 602 při ukládání. Tests.Document pokrývá novou cestu "nastavit 1.3, SetTransparency, FVersion se stane 1.4 a uložení zapíše %PDF-1.4", ekvivalentní cesty pro SetPageUserUnit a Encrypt(AES-256) a případ no-op, kdy volající už zvolil verzi splňující minimum zapisovače

Validační aktualizace 3.14.3 uzavírá fázi 2 práce na shodě verzí přidáním zbývajících 3D slovníkových typů PDF 1.6 (/Type /3DStream /3DRef /3DBackground /3DRenderMode /3DLightingScheme /3DCrossSection /3DNode) a podtypů anotací PDF 1.7 Redact, RichMedia a Projection spolu s doprovodnými slovníky /Type /Requirement a /ReqHandler. S tímto PATCH-em SSOT nyní pokrývá funkce na úrovni kapitol PDF 1.3 až 1.7 v jedné tabulce funkce-na-minimální-verzi

Validační aktualizace 3.14.2 rozšiřuje sadu pravidel shody verzí, aby rozpoznala funkce PDF 1.5: formuláře /XFA, /AlternatePresentations, strom jmen /Renditions, multimediální slovníky /Type /Rendition /MediaCriteria /MediaPermissions /MediaPlayers a podtyp anotace Screen

Validační aktualizace 3.14.1 rozšiřuje sadu pravidel shody verzí, aby rozpoznala funkce PDF 1.4: slovníky /StructTreeRoot, /MarkInfo a StructElem (tagované PDF), položky /Tabs stránky a /Lang dokumentu, reference /StructParent a /StructParents, slovníky /OutputIntents a /OutputIntent, podpis práv použití /UR3 a podtypy anotací PDF 1.4 Polygon, PolyLine, Caret, Ink, Popup a Watermark. Tests.Document pokrývá nové cesty "uložit jako PDF 1.3 odmítne /StructTreeRoot" a "uložit jako PDF 1.4 ponechá /StructTreeRoot"

Validační aktualizace 3.14.0 rozšiřuje sadu pravidel shody verzí, aby rozpoznala funkce PDF 1.3 (plynulé stínování a slovníky funkcí, barevné prostory ICCBased a DeviceN, položky stránek TrimBox/BleedBox/ArtBox, CMapy /ToUnicode, anotace příloh souborů / Sound / Movie, slovníky /Type /Filespec a /Type /EmbeddedFile, klíče /Group /EF /Alternates /Mask a akce JavaScript). Verze 3.23.0 nahrazuje dřívější toleranci kompatibility PDF 1.2 striktní branou PDF 1.2. Tests.Document nyní pokrývá striktní odmítnutí PDF 1.2 pro data TrimBox PDF 1.3 a uzamčený preflight verze u přidávacího ukládání

Validační aktualizace 3.13.0 zachovává stejné chování odmítání ukládání mimo verzi jako 3.12.7 (LastErrorCode 602), zatímco přesouvá sadu pravidel do dedikovaného unitu Lib\PDFlibVersion.pas a přidává fixturu DUnitX Tests.Version, která tvrdí, že tabulka pravidel obsahuje základní pravidla v3.12.6 a že helpery řetězců verzí správně projdou tam a zpět

Validační matice 3.12.0 zahrnuje build-zlib-bcc32, build-zlib-bcc64x, build-zlib-vc64, build-jpeg-bcc32 a build-jpeg-vc64, každý dokončený s nulovým počtem selhaných objektů. Sestavení balíčku knihovny byla ověřena také s build-Win32-Lib.cmd 37.0 a build-Win64-Lib.cmd 37.0

Aktuální sady DUnitX Delphi prošly 362 z 362 testů na Win32 a 362 z 362 testů na Win64. Pokryté oblasti zahrnují zpětné cesty komprese, dekódování známých proudů zlib, payloady na hranici velikosti, uložené víceblokové proudy, výstup /FlateDecode HelloWorld, vykreslování JPEG a PNG, import a export obrázků, fonty, formuláře, šifrování, dešifrování, podpisování, atributy PAdES, tisk, helpery Unicode, buffery, kreslení na plátno, stránky, tabulky, pracovní postupy dokumentů, parsování syntaxe/xref, striktní ukládající kontrakty PDF 1.2, preflight verze přidávacího ukládání, shodu na úrovni rozšíření PDF 1.7, diagnostiku PDF/UA a generování/porovnávání preflight zpráv

Aktuální sada GoogleTest C++Builder Win64x prošla 61 testy a přeskočila 2 stávající testy závislé na vzorcích. Pokrývá pracovní postupy odvozené z dema plus známé proudy zlib-ng, payloady na hranici velikosti, payloady scanline podobné PNG, zpětné cesty uložených víceblokových, zpracování obrázků, výstup renderu včetně pokrytí direct-access PdfToImage, šifrování, podpisování, tisk, striktní ukládající kontrakty PDF 1.2, výstup na úrovni rozšíření PDF 1.7, preflight verze přidávacího ukládání a kontroly komprimovaného výstupu HelloWorld, což ověřuje sadu objektů zlib-ng bcc64x skrze ABI C++Builderu

HTML reference je střežena tools/test_docs_api_coverage.py, která kontroluje, že každá veřejná funkce TPDFlib má anglickou referenční stránku, a tools/test_docs_navigation.py, která drží cíle navigace vícejazyčného changelogu konzistentní v rámovaném obalu nápovědy

Readme.html a HTML reference by se měly držet v souladu, když se změní uživateli viditelné chování validace, preflightu, vykreslování, podpisování nebo zpráv