Automatizirana pokrivenost provjere valjanosti

Ažuriranje preflight izvješća verzije 3.56.37 dodaje dokumentiranu automatiziranu putanju uz postojeće provjere PDF/A i PDF/UA-1 datoteka. Delphi demo PreflightReport sada pokriva izvješća za jednu datoteku, grupe mapa, izlaz za tekst/JSON/HTML/CSV, CSV datoteke sa sažetkom u UTF-8 kodiranju i usporedbu osnovne linije kroz ComparePreflightReports. Tests.Preflight provjerava odjeljke izvješća, strojno čitljiv JSON, samostalni HTML, retke CSV-a, spremanje UTF-8 izlaza, linije razlike i normalizaciju vremenskih oznaka

Serija provjera PDF/UA za verzije 3.56.0 do 3.56.25 proširuje čitateljsku i pisateljsku dijagnostiku oko PDF/UA-1 metapodataka, MarkInfo, RoleMap, dozvola pristupa enkripcijom, XFA, referentnih XObject objekata, redoslijeda kartica i opisa polja obrasca, naziva FileSpec, konfiguracijskih rječnika OCG, ugrađenih fontova i TrueType kodiranja, poretka naslova, numeriranja popisa, Note IDs, medijskih isječaka i ponovljenih direktnih dječjih čvorova H. Niska razina čitanja izložena je kroz CheckFileCompliance, a pisateljska memorijska putanja kroz GetPDFUADiagnostics

Posao validacije PAdES u verziji 3.56.x dodaje testove i referentnu pokrivenost za odabir sažetka, autentificirane atribute PAdES-B-B, signing-certificate-v2 IssuerSerial, dopunu vremenske oznake potpisa, sastavljanje DSS/VRI i atribute tipa obveze i politike potpisa. Te se provjere obrađuju u testovima potpisivanja i posebnim PAdES stranicama pod Sigurnost i potpisi

Ažuriranje validacije 3.23.0 uvodi strogu kontrolu usklađenosti PDF verzije za PDF 1.2 i dodaje provjere razine proširenja PDF 1.7. Izlazni ciljevi za PDF 1.2 sada odbijaju mogućnosti PDF 1.3+ poput podataka TrimBox stranice prije upisa. AESV3, AES-256, RichMedia, Projection rječnici i ETSI potpisni SubFilter-i provjeravaju se prema obaveznoj deklaraciji /Extensions /ADBE /ExtensionLevel. Ulazne točke pisca koje emitiraju te značajke razine ekstenzije automatski postavljaju odgovarajuću razinu, a append spremanja provode isti preflight kao i puna spremanja. Tests.Document, Tests.Version i Tests.VersionCompliance za C++Builder pokrivaju strogo odbijanje PDF 1.2, izlaz AES-256 ExtensionLevel, preflight pri append spremanju i SSOT pravila razina

Ažuriranje validacije 3.20.0 proširuje pokrivenost EnsureMinVersion s osam novih PDFlib ulaznih toč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 potpisna polja (PDF 1.5 — AcroForm /SigFlags AppendOnly bit). Zbrojeno s unosima 3.15.0 i 3.17.0, PDFlib sada automatski podiže FVersion kroz dvadeset i jedan writer ulaz u visoku verziju. NewOptionalContentGroup je prije toga direktno podizao FVersion zaobilazeći EnsureMinVersion i LockSaveVersion; sad ide kroz ispravni put kako bi se zaključavanje poštovalo i kako bi se pomak 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 ranije odgođena SSOT pravila /Ff. Bit 15 NoToggleToOff za gumbne polja (Btn, maska 16384) ograničava ponašanje radio-gumbova na PDF 1.4 i razlikuje se na temelju /FT = 'Btn'. Pravilo DeviceN /Subtype /NChannel prepoznaje PDF 1.6 NChannel fino podešavanje prostora boja koje je zapisano u atributnom rječniku na indeksu 4 niza DeviceN. Pravilo FontFile3 /Subtype /OpenType prepoznaje PDF 1.6 OpenType font programe kada se stream dostigne preko roditeljskog ključa FontFile3. Pravilo Sig /SubFilter ETSI aktivira se za rječnike potpisa s /SubFilter ETSI.CAdES.detached ili /SubFilter ETSI.RFC3161 i primjenjuje se za PDF 1.7. Ovo je prvi skup callbacka SSOT-a koji se oslanja na kontekstualnu svijest Ctx.KeyName Napi Tests.Version potvrđuje da su sva četiri pravila prisutna s točnom MinVersion, a broj pravila porastao je s 99 na 103

Ažuriranje validacije 3.18.6 dodaje kontekstno osjetljiva pravila za /AA (dodatne radnje). /AA se pojavljuje u četiri PDF rječnika s različitim minimalnim verzijama: Catalog /AA (okidači na razini dokumenta, PDF 1.4), Annot /AA (okidači oznake, PDF 1.4), Page /AA (okidači stranice, PDF 1.5) i Form field /AA (PDF 1.2, ispravno pod strogim PDF 1.2 odredištima). Tri nova fmkCustom callbacka razlikuju prema /Type tako da samo odgovarajuće pravilo pogađa sadržići kontejner. Widget anotacija /AA (polje obrasca koje je i /Subtype /Widget anotacija) namjerno aktivira granu Annot /AA u PDF 1.4; to je prihvatljiva aproksimacija jer svaki ugovor spremanja od PDF 1.4 naviše već prihvaća form-field /AA. Tests.Version potvrđuje prisutnost sva tri kontekstna /AA pravila

Ažuriranje validacije 3.18.5 ispravlja pogrešno razvrstavanje pravila /Tabs i dodaje pravilo /NeedAppearances. /Tabs je prije bilo upisan u PDFFeatureRules kao PDF 1.4, ali tehnička bilješka Adobe PDF 1.4 (Technical Note #5409) ga ne uvodi; unos je prvi put naveden u PDF 1.5 u tablici 8.10 (Page Object). Pravilo je sada smješteno u odjeljak PDF 1.5. Novo pravilo pokriva AcroForm /NeedAppearances (PDF 1.5 Table 218), koji prije nije imao pripadanje u tablici. Tests.Version potvrđuje da /Tabs nema unos PDF 1.4 i da je pravilo /NeedAppearances PDF 1.5 prisutno; broj pravila porastao je s 95 na 96

Ažuriranje validacije 3.18.1 proširuje set pravila razine bitova s sedam /Ff callbackova polja obrasca i AcroForm /SigFlags AppendOnly bitom. 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. Nasljeđivanje /Parent nije praćeno — samo rječnici koji eksplicitno nose /Ff ili /SigFlags aktiviraju pravila. Tests.Document pokriva primjer Tx /Ff 16777220 (Comb + NoExport) koji podiže loader s 1.4 na 1.5 i vodi Comb u ContributorFeatures

Ažuriranje validacije 3.18.0 počinje dodavanje podključeva i pravila razine bitova u PDFFeatureRules Tri pravila za anotacijske /F bitove pokrivaju vrijednosti Locked (128, PDF 1.4), ToggleNoView (256, PDF 1.5) i LockedContents (512, PDF 1.7); aktiviraju se samo kada je rječnik /Type /Annot Šest novih fmkDictKey pravila pokriva prepoznatljive ključne ulaze kataloga i stranice: /BoxColorInfo (PDF 1.4), /Permissions, /Legal i /PresSteps (PDF 1.5), /VP (PDF 1.6) i /Collection (PDF 1.7). Tests.Document pokriva primjer Annot /F 516 (Print + LockedContents) koji loader podiže sa 1.4 na 1.7 i navodi LockedContents u ContributorFeatures; Tests.Version potvrđuje da su nova pravila u tablici

Ažuriranje validacije 3.17.0 proširuje writer-side EnsureMinVersion na još osam ulaznih točaka PDFlib: AddLinkToJavaScript, SetOpenActionJavaScript, AddGlobalJavaScript i FormFieldJavaScriptAction (sve PDF 1.3); AddEmbeddedFile i AddFileAttachment (PDF 1.3); SetXFAFromString (PDF 1.5); AddSWFAnnotationFromFile (PDF 1.7). S obzirom na originalne unose 3.15.0 (SetTransparency, SetPageUserUnit, Encrypt, SetPageLayout), PDFlib sada automatski podiže FVersion kroz trinaest writer ulaza visoke verzije. Tests.Document pokriva JS trojku (AddGlobalJavaScript, SetOpenActionJavaScript, AddLinkToJavaScript) koja automatski podiže novi dokument s PDF 1.2 na PDF 1.3

Ažuriranje validacije 3.16.3 dodaje opcijski zaključak verzije. Nova PDFlib API funkcija LockSaveVersion(Version) zaključava FVersion na Version i sprječava da faza 3 writer-side EnsureMinVersion ga dodatno poveća; UnlockSaveVersion uklanja zaključavanje. Gate tijekom spremanja ostaje isti, pa zaključan dokument koji dobije oznaku više verzije kroz writer poziv i dalje pada pri spremanju s LastErrorCode 602. Tests.Document pokriva: (a) zaključavanje na 1.3 + SetTransparency gdje FVersion ostaje 1.3, AutoBumpedFeatures je prazno i SaveToFile pada s 602; (b) zaključavanje na 1.6 + SetTransparency/SetPageUserUnit gdje oba poziva prolaze bez daljnjeg podizanja FVersion; (c) zaključavanje + SetTransparency (odbijeno) + Unlock + SetTransparency (odobreno) gdje se FVersion podiže na 1.4 i AutoBumpedFeatures bilježi transparency

Ažuriranje validacije 3.16.2 dodaje pogled doprinosa koji je vezan samo uz detekciju učitavanja. CollectMatchesForObject i DetectFeaturesInObjectTree sada prihvaćaju parametar BaselineVersion kako bi pozivi mogli razdvojiti pronađene značajke u svako podudaranje (DetectedFeatures, GetInformation 101) i podudaranja čija je MinVersion strogo iznad bazne vrijednosti (ContributorFeatures, GetInformation 103). TPDFDocument.DetectVersionFromContent upotrebljava HeaderVersion datoteke kao baznu razinu kako bi ContributorFeatures odgovorio na pitanje "zašto je efektivna verzija viša od literalnog zaglavlja datoteke". Tests.Document pokriva primjer gdje se /CA nalazi u DetectedFeatures, ali ContributorFeatures ostaje prazno (nije nijedno pravilo koje bi podiglo verziju iznad zaglavlja 1.4), te kombinirani primjer gdje se samo /UserUnit (1.6) prikazuje u ContributorFeatures, dok su /TrimBox (1.3) i /StructTreeRoot (1.4) filtrirani

Ažuriranje validacije 3.16.1 proširuje detekciju s obje strane učitavanja s dodatnih šest sintetičkih primjera i testova: transparentni ExtGState na jednoj strani (PDF 1.4 značajka bez podizanja jer je zaglavlje već 1.4), unos Catalog /MarkInfo koji podiže PDF 1.3 na PDF 1.4, skup /OCProperties i OCG sadržaja koji diže PDF 1.4 na PDF 1.5, objekt /Type /3DStream koji diže PDF 1.5 na PDF 1.6, kombinirani primjer više značajki koji potvrđuje da FVersion odražava najveći minimalni zahtjev i da DetectedFeatures prikazuje svaki doprinosni unos, te provjera stabilnosti snimke koja potvrđuje da naknadni auto-bump pisca u učitavanju završava u AutoBumpedFeatures dok DetectedFeatures ostaje na snapshotu učitavanja

Ažuriranje validacije 3.16.0 dovršava plan usklađenosti PDF verzije kroz detekciju na strani učitavanja. Nakon LoadFromString, LoadFromFile i LoadFromStream, TPDFDocument.DetectVersionFromContent prolazi kroz svaki neizravan objekt kroz SSOT i diže FVersion iznad literalne %PDF-X.Y vrijednosti zaglavlja kada sadržaj zahtijeva višu verziju. Tri nova ključa GetInformation (100 = HeaderVersion, 101 = DetectedFeatures, 102 = AutoBumpedFeatures) izlažu dijagnostiku učitavanja i pisanja. Tests.Document pokriva sintetički PageUserUnitFixture (header 1.4, page /UserUnit 2.0) koji učitavanje podiže na 1.6 uz očuvanje HeaderVersion 1.4 i primjer novog dokumenta koji potvrđuje da su dijagnostički ključevi prazni prije bilo kakvog učitavanja

Ažuriranje validacije 3.15.0 vodi PDFlib writer ulazne točke (SetTransparency, SetPageUserUnit, Encrypt s AES jačinama, SetPageLayout s dvjema stranicama po papiru) kroz TPDFDocument.EnsureMinVersion tako da poziv značajke više verzije u dokumentu s niskom metom spremanja sada automatski podiže verziju umjesto vraćanja LastErrorCode 602 pri spremanju. Tests.Document pokriva novi tok set 1.3, SetTransparency, FVersion postaje 1.4 i spremanje piše %PDF-1.4, ekvivalentne tokove za SetPageUserUnit i Encrypt(AES-256), te slučaj bez promjene kada je pozivalac već odabrao verziju koja zadovoljava minimum pisca

Ažuriranje validacije 3.14.3 zatvara fazu 2 usklađenosti verzije dodavanjem preostalih PDF 1.6 3D tipova rječnika (/Type /3DStream /3DRef /3DBackground /3DRenderMode /3DLightingScheme /3DCrossSection /3DNode) i PDF 1.7 anotacijskih podtipova Redact i RichMedia te Projection zajedno s /Type /Requirement i pomoćnim /ReqHandler rječnicima. S ovim PATCH-om SSOT sada pokriva PDF 1.3 do PDF 1.7 značajke u jednoj tablici minimalna verzija — značajka

Ažuriranje validacije 3.14.2 proširuje skup pravila usklađenosti verzije za prepoznavanje PDF 1.5 značajki: /XFA obrazci, /AlternatePresentations, name tree /Renditions, rječnik /Type /Rendition /MediaCriteria /MediaPermissions /MediaPlayers i podtip oznake Screen

Ažuriranje validacije 3.14.1 proširuje skup pravila usklađenosti verzije za prepoznavanje PDF 1.4 značajki: /StructTreeRoot, /MarkInfo i StructElem rječnici za označeni PDF, unos page /Tabs i document /Lang, reference /StructParent i /StructParents, /OutputIntents i /OutputIntent rječnici, potpis /UR3 o pravima korištenja i podtipovi anotacija PDF 1.4 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 za prepoznavanje PDF 1.3 značajki: glatko sjenčanje i funkcijske rječnike, ICCBased i DeviceN prostori boja, unosi stranice TrimBox/BleedBox/ArtBox, /ToUnicode CMaps, file attachment /Sound i /Movie anotacije, rječnike /Type /Filespec i /Type /EmbeddedFile, ključeve /Group /EF /Alternates /Mask, i JavaScript akcije. Verzija 3.23.0 nadomešćuje raniju toleranciju kompatibilnosti PDF 1.2 strožim zaključavanjem PDF 1.2. Tests.Document sada pokriva strogo odbijanje PDF 1.2 za PDF 1.3 TrimBox i zaključani append-save preflight verzije

Ažuriranje validacije 3.13.0 zadržava isto ponašanje odbijanja spremanja izvan verzije kao i 3.12.7 (LastErrorCode 602), ali prenosi tablicu pravila u zasebnu jedinicu Lib\PDFlibVersion.pas i dodaje Tests.Version DUnitX ispit koji potvrđuje da tablica pravila sadrži osnovna pravila iz 3.12.6 i da pomoćnici za verzije rade kružno ispravno

Validacijska matrica 3.12.0 uključuje build-zlib-bcc32, build-zlib-bcc64x, build-zlib-vc64, build-jpeg-bcc32 i build-jpeg-vc64, pri čemu svaki završava s nulom neuspjelih objekata. Buildove biblioteka provjeravali su i build-Win32-Lib.cmd 37.0 i build-Win64-Lib.cmd 37.0

Trenutni Delphi DUnitX setovi prošli su 362 od 362 testova na Win32 i 362 od 362 testova na Win64. Pokrivena su područja kompresijskih krugova, poznatog dekodiranja zlib toka, granica veličine tereta, višeblokovnih pohranjenih tokova, izlaza HelloWorld /FlateDecode, prikaza JPEG i PNG, uvoza i izvoza slika, fontova, obrazaca, enkripcije, dekripcije, potpisivanja, PAdES atributa, ispisa, pomoćnih alata za Unicode, buffera, crtanja na platnu, stranica, tablica, radnih tijekova dokumenata, parsiranja sintakse i xref, strogih PDF 1.2 pravila spremanja, append-save preflight verzije, PDF 1.7 provjere ekstenzije, PDF/UA dijagnostike te generiranja i usporedbe preflight izvješća

Trenutni C++Builder Win64x GoogleTest set prošao je 61 test i preskočio 2 postojeća testova ovisna o uzorku. Pokriva demo-proizašle tokove kao i zlib-ng poznate tokove, terete granice veličine, PNG-slične skrej-line podatke, višeblokovne obrade s pohranom, rukovanje slikama, render izlaz uključujući pokrivenost direct-access PdfToImage, enkripciju, potpisivanje, ispis, stroge PDF 1.2 ugovore spremanja, PDF 1.7 izlaz razine ekstenzije i HelloWorld provjere kompresiranog izlaza koje potvrđuju skup bcc64x zlib-ng objekata kroz C++Builder ABI

HTML referenca štiti tools/test_docs_api_coverage.py, koji provjerava da svaka javna TPDFlib funkcija ima englesku referentnu stranicu, te tools/test_docs_navigation.py, koji održava dosljedne ciljne stavke multijezičnog changelog u okviru uokvirene pomoći

Readme.html i HTML referenca trebaju ostati usklađeni kada se promijeni vidljivo ponašanje validacije, preflight-a, renderiranja, potpisivanja ili izvještavanja