Automated Validation Coverage
Покритие на автоматизираната валидация
Описание
Актуализацията на предварителния отчет 3.56.37 добавя описан автоматизиран път върху съществуващите проверки на файловете PDF/A и PDF/UA-1. Delphi демото PreflightReport сега покрива отчети за единични файлове, групови проверки по директории, изход в текст, JSON, HTML и CSV, CSV обобщени файлове в UTF-8 и сравнение с базов текст чрез ComparePreflightReports. Tests.Preflight валидира секциите на отчета, машинно-четимия JSON, самостоятелния HTML, редовете в CSV, запазения UTF-8 изход, редовете с разлики и нормализиране на времевата отметка
Актуализацията за PDF/UA проверки 3.56.0 до 3.56.25 разширява диагностиката за четене и запис около PDF/UA-1 метаданни, MarkInfo, RoleMap, разрешения за достъпност при криптиране, XFA, речници Reference XObject, подредба на табулацията и описания на анотации, имена FileSpec, речници за конфигуриране на OCG, вграждане на шрифтове и кодиране на TrueType, ред на заглавията, номериране на списъци, Note IDs, media clips и повтарящи се директни H деца. Пътят на ниско ниво на четене е достъпен чрез CheckFileCompliance; пътят за писане в памет е достъпен чрез GetPDFUADiagnostics
Актуализацията за PAdES в клон 3.56.x добавя тестове и референтно покритие за избор на хеш, аутентифицирани атрибути PAdES-B-B, IssuerSerial с signing-certificate-v2, добавяне на signature-time-stamp, сглобяване на DSS/VRI, индикация за commitment-type и атрибути за подпечатване чрез signature policy. Тези проверки са покрити от тестовете за подписване и от специалните PAdES референтни страници в секция Security and Signatures
Актуализацията за валидация 3.23.0 прави контрола за съвместимост на PDF версията строг за PDF 1.2 и добавя проверки за PDF 1.7 Adobe extension-level. Целите за запис PDF 1.2 вече отхвърлят PDF 1.3+ функции като TrimBox данни на страниците преди запис. AESV3, AES-256, RichMedia, Projection, гео-пространствени речници и ETSI подпис subfilters се сверяват спрямо задължителното деклариране на /Extensions /ADBE /ExtensionLevel. Изходните точки за запис, които изкарват такива функции, вече декларират съвпадащото ниво ADBE автоматично, а добавителните записи при save извършват същия preflight като пълния save. Tests.Document, Tests.Version и фикстурата C++Builder Tests.VersionCompliance покриват строгото отхвърляне за PDF 1.2, изхода за AES-256 ExtensionLevel, preflight при append-save и правилата за SSOT за extension-level
Актуализацията за валидация 3.20.0 разширява writer-side EnsureMinVersion към още осем входни точки на PDFlib: SetDocumentMetadata (PDF 1.4 — /Metadata XMP stream), SetPDFAMode (PDF 1.4 — /MarkInfo и /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) и NewFormField за полета за подписи (PDF 1.5 — AcroForm /SigFlags AppendOnly bit). В комбинация с записите v3.15.0 и v3.17.0, PDFlib вече увеличава автоматично FVersion за цели двадесет и една writer входни точки. NewOptionalContentGroup по-рано увеличаваше FVersion директно, заобикаляйки EnsureMinVersion и LockSaveVersion; сега минава през правилния път, така че заключването се спазва и увеличението се отразява в AutoBumpedFeatures. Tests.Document покрива шест нови автоматични случаи (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)
Актуализацията за валидация 3.19.0 реализира четири досега отложени SSOT правила. Флагът Btn-field /Ff bit 15 NoToggleToOff (маска 16384) ограничава поведението само за радиобутони до PDF 1.4 и разграничава по /FT = 'Btn'. Правилото DeviceN /Subtype /NChannel разпознава PDF 1.6 NChannel усъвършенстване на цветови пространства, кодирано в речника attributes на индекс 4 от DeviceN масива. Правилото FontFile3 /Subtype /OpenType разпознава PDF 1.6 OpenType програми за шрифтове, когато потока е достъпен през parent ключ с име FontFile3. Правилото Sig /SubFilter ETSI сработва за сигнатурни речници с /SubFilter ETSI.CAdES.detached или /SubFilter ETSI.RFC3161 и изисква PDF 1.7. Това е първият комплект SSOT callback-и, който разчита контекста Ctx.KeyName. Tests.Version потвърждава че всички четири правила присъстват с правилен MinVersion. Броят на правилата е нараснал от 99 на 103
Актуализацията за валидация 3.18.6 добавя контексто-зависими правила за /AA (допълнителни действия). /AA се среща в четири PDF речника с различни минимални версии: Catalog /AA (събития на ниво документ, PDF 1.4), Annot /AA (събития на анотации, PDF 1.4), Page /AA (събития на страница, PDF 1.5), и Form field /AA (PDF 1.2, валидно при строги PDF 1.2 целеви стойности). Трите нови fmkCustom callbacks разделят логиката по /Type, така че /AA стартира само правилото за контейнера, в който е поставено. Widget анотация /AA (поле от формуляр, което е и анотация /Subtype /Widget) умишлено активира Annot /AA клона при PDF 1.4; това е приета апроксимация защото всеки save договор от PDF 1.4 нагоре вече приема form-field /AA. Tests.Version потвърждава че всички три контексто-зависими /AA правила присъстват. Броят на правилата е нараснал от 96 на 99
Актуализацията за валидация 3.18.5 коригира грешна класификация на /Tabs и добавя правило за /NeedAppearances. /Tabs (подредба на табулация на страница) беше описано като PDF 1.4 в PDFFeatureRules, но спецификацията на Adobe PDF 1.4 промени (Technical Note #5409) не въвежда /Tabs; елементът се въвежда първо в PDF 1.5, таблица 8.10 (Page Object). Правилото е преместено към секцията PDF 1.5. Ново правило покрива AcroForm /NeedAppearances (PDF 1.5 Таблица 218), което преди това нямаше представяне в таблицата. Tests.Version потвърждава че /Tabs няма запис за PDF 1.4 и че правилото за /NeedAppearances PDF 1.5 е налице. Броят на правилата е нараснал от 95 на 96
Актуализацията за валидация 3.18.1 разширява набора от битови правила с седем филдове /Ff за формулярни полета и бит AcroForm /SigFlags AppendOnly. Tx FileSelect (1048576), Ch MultiSelect (2097152), Tx/Ch DoNotSpellCheck (4194304) и Tx DoNotScroll (8388608) прехвърлят на PDF 1.4; Tx Comb (16777216), Tx RichText / Btn RadiosInUnison (33554432), Ch CommitOnSelChange (67108864) и AcroForm SigFlags AppendOnly (маска 2) прехвърлят на PDF 1.5. Наследяването на /Parent не се следва — само речници, които изрично носят /Ff или /SigFlags, задействат правилата. Tests.Document покрива Tx /Ff 16777220 фикстура (Comb + NoExport) която покачва loader от 1.4 до 1.5 и записва Comb в ContributorFeatures
Актуализацията за валидация 3.18.0 започва добавянето на под-ключови и битови правила към PDFFeatureRules. Три битови правила за анотационни флагове покриват маските /F за Locked (128, PDF 1.4), ToggleNoView (256, PDF 1.5) и LockedContents (512, PDF 1.7) и се задействат само когато речникът е /Type /Annot. Шест нови fmkDictKey правила покриват различни каталожни и страницни под-ключове: /BoxColorInfo (PDF 1.4), /Permissions, /Legal и /PresSteps (PDF 1.5), /VP (PDF 1.6), и /Collection (PDF 1.7). Tests.Document покрива Annot /F 516 фикстура (Print + LockedContents), което покачва loader от 1.4 до 1.7 и изброява LockedContents в ContributorFeatures. Tests.Version потвърждава че новите правила са в таблицата
Актуализацията за валидация 3.17.0 разширява writer-side EnsureMinVersion към още осем входни точки: AddLinkToJavaScript, SetOpenActionJavaScript, AddGlobalJavaScript и FormFieldJavaScriptAction (всички PDF 1.3); AddEmbeddedFile и AddFileAttachment (PDF 1.3); SetXFAFromString (PDF 1.5); AddSWFAnnotationFromFile (PDF 1.7). Заедно с първоначалните записи в v3.15.0 (SetTransparency, SetPageUserUnit, Encrypt, SetPageLayout), PDFlib вече автоматично увеличава FVersion през тринадесет writer входни точки с по-висока версия. Tests.Document покрива JavaScript триадата (AddGlobalJavaScript, SetOpenActionJavaScript, AddLinkToJavaScript) за автоматично покачване на нов документ от PDF 1.2 до PDF 1.3
Актуализацията за валидация 3.16.3 добавя заключване на версия по избор. Новият PDFlib API LockSaveVersion(Version) фиксира FVersion на Version и спира Phase 3 writer-side EnsureMinVersion да я покачва; UnlockSaveVersion сваля заключването. Проверката в save остава непроменена, така че заключен документ, който приема по-висока версия чрез writer повикване, пак отпада със LastErrorCode 602 при записа. Tests.Document покрива (a) заключване на 1.3 + SetTransparency: FVersion остава 1.3, AutoBumpedFeatures е празно, SaveToFile проваля с LastErrorCode 602; (b) заключване на 1.6 + SetTransparency / SetPageUserUnit: и двете извиквания минават без допълнително увеличаване на FVersion; (c) заключване + SetTransparency (отказано) + Unlock + SetTransparency (позволено): FVersion се покачва до 1.4 и AutoBumpedFeatures записва \"transparency\"
Актуализацията за валидация 3.16.2 добавя изглед само за приносителите на откритите натоварвания на зареждане. CollectMatchesForObject и DetectFeaturesInObjectTree вече приемат параметър BaselineVersion, така че извикващите да разделят откритите функции на \"всеки мач\" (DetectedFeatures, GetInformation 101) и \"мачове с MinVersion строго над базовото\" (ContributorFeatures, GetInformation 103). TPDFDocument.DetectVersionFromContent подава за baseline файла HeaderVersion, така че ContributorFeatures отговаря на въпроса „защо ефективната версия е по-висока от буквения хедър на файла?“ Tests.Document покрива фикстура, която изброява /CA в DetectedFeatures, но дава празни ContributorFeatures (няма правило над хедъра 1.4), и комбинирана фикстура, където само /UserUnit (1.6) влиза в ContributorFeatures, докато /TrimBox (1.3) и /StructTreeRoot (1.4) се филтрират
Актуализацията за валидация 3.16.1 разширява покритието за откриване при зареждане с шест допълнителни синтетични фикстури и тестове: in-page ExtGState прозрачност в PDF 1.4 без покачване, защото хедърът вече е 1.4; Catalog /MarkInfo който покачва PDF 1.3 към 1.4; набор /OCProperties + OCG съдържание, който покачва PDF 1.4 към 1.5; Type /3DStream обект, който покачва PDF 1.5 към 1.6; комбиниран фикстурен случай, потвърждаващ че FVersion отразява най-високата изисквана стойност и че DetectedFeatures изброява всички участващи елементи; и проверка за стабилност на моментния снимков момент, която потвърждава че авто-покачванията за writer след зареждане се отразяват в AutoBumpedFeatures, докато DetectedFeatures остава върху снимката от зареждане
Актуализацията за валидация 3.16.0 завършва плана за PDF version-compliance с откриване от страна на зареждане. След LoadFromString / LoadFromFile / LoadFromStream, TPDFDocument.DetectVersionFromContent обхожда всеки индиректен обект през SSOT и повишава FVersion над буквената стойност %PDF-X.Y в хедъра когато съдържанието изисква по-висока версия. Трите нови ключа на GetInformation (100 = HeaderVersion, 101 = DetectedFeatures, 102 = AutoBumpedFeatures) показват диагностиката и за зареждане, и за запис. Tests.Document покрива синтетичен PageUserUnitFixture (хедър 1.4, page /UserUnit 2.0), при който зареждането покачва до 1.6 при запазване на HeaderVersion 1.4, и сценарий за нов документ, който потвърждава че диагностичните ключове са празни преди зареждане
Актуализацията за валидация 3.15.0 свързва writer входни точки PDFlib (SetTransparency, SetPageUserUnit, Encrypt с AES усилвания, SetPageLayout с режими на две страници) през TPDFDocument.EnsureMinVersion, така че извикването на високорезервна функция при ниско целево save автоматично покачва версията вместо да връща LastErrorCode 602 по време на save. Tests.Document покрива новия път \"set 1.3, SetTransparency, FVersion става 1.4 и записът пише %PDF-1.4\", еквивалентни пътеки за SetPageUserUnit и Encrypt(AES-256), и no-op случай когато caller вече е избрал версия, която покрива минимумите на писача
Актуализацията за валидация 3.14.3 затваря Фаза 2 на работата по PDF version-compliance с добавяне на останалите PDF 1.6 3D типове речници (/Type /3DStream /3DRef /3DBackground /3DRenderMode /3DLightingScheme /3DCrossSection /3DNode) и PDF 1.7 Redact, RichMedia и Projection подтипове на аннотации заедно с речници /Type /Requirement и /ReqHandler. С тази PATCH SSOT вече покрива PDF 1.3 до 1.7 функции на ниво глава в една таблица feature-to-minimum-version
Актуализацията за валидация 3.14.2 разширява набора от правила за съвместимост с PDF 1.5, включвайки /XFA форми, /AlternatePresentations, /Renditions name tree, речниците /Type /Rendition /MediaCriteria /MediaPermissions /MediaPlayers и субтип Screen на анотациите
Актуализацията за валидация 3.14.1 разширява набора от правила за съвместимост с PDF 1.4 с /StructTreeRoot, /MarkInfo и StructElem речници (tagged PDF), page /Tabs и document /Lang, /StructParent и /StructParents референции, /OutputIntents и /OutputIntent речници, /UR3 usage-rights signature, и PDF 1.4 annotation подтипове Polygon, PolyLine, Caret, Ink, Popup и Watermark. Tests.Document покрива новите сценарии \"save as PDF 1.3 rejects /StructTreeRoot\" и \"save as PDF 1.4 keeps /StructTreeRoot\"
Актуализацията за валидация 3.14.0 разширява набора от правила за съвместимост с PDF 1.3 (гладки преливки и function dicts, ICCBased и DeviceN цветови пространства, TrimBox/BleedBox/ArtBox entries на страница, /ToUnicode CMaps, файлови FileSpec / Sound / Movie анотации, /Type /Filespec и /Type /EmbeddedFile речници, ключове /Group /EF /Alternates /Mask, и JavaScript actions). Версия 3.23.0 замества по-ранната толерантност за PDF 1.2 със строг PDF 1.2 gate. Tests.Document вече покрива строгото отхвърляне на PDF 1.2 за PDF 1.3 TrimBox данни и веригата за append-save при заключено version preflight
Актуализацията за валидация 3.13.0 запазва същото поведение за отхвърляне на запис извън версията като 3.12.7 (LastErrorCode 602), но прехвърля набора от правила в отделния модул Lib\\PDFlibVersion.pas и добавя DUnitX фикстура Tests.Version, която потвърждава че таблицата с правила съдържа базовите правила от v3.12.6 и че помощните функции за версии работят с обратима коректност
Версия 3.12.0 на валидационната матрица включва build-zlib-bcc32, build-zlib-bcc64x, build-zlib-vc64, build-jpeg-bcc32 и build-jpeg-vc64, всяка с нула неуспешни обекти. Сборките на библиотеката бяха проверени и с build-Win32-Lib.cmd 37.0 и build-Win64-Lib.cmd 37.0
Текущите Delphi DUnitX комплекти минават 362 от 362 теста на Win32 и 362 от 362 теста на Win64. Засегнатите области включват компресионни кръгове, валидиране на известни zlib потоци, гранично големи полезни товари, запазени много-блокови потоци, изход HelloWorld /FlateDecode, JPEG и PNG рендиране, импорт и експорт на изображения, шрифтове, формуляри, криптиране, декриптиране, подписване, PAdES атрибути, печат, Unicode помощници, буфери, canvas чертане, страници, таблици, работни потоци на документ, синтаксис/xref анализ, строги PDF 1.2 save договори, append-save version preflight, PDF 1.7 extension-level съвместимост, PDF/UA диагностика и генериране/съпоставка на preflight отчети
Текущият C++Builder Win64x GoogleTest комплект минава 61 теста и пропуска 2 съществуващи зависещи от примери теста. Покрива потоци от демо-произход плюс zlib-ng известни потоци, гранични полезни товари, PNG-like сканиращи потоци, запазени много-блокови кръгове, обработка на изображения, рендиране на изход включително директен достъп PdfToImage, криптиране, подписване, печат, стриктни PDF 1.2 save договори, PDF 1.7 extension-level изход, append-save version preflight и проверки на компресиран изход от HelloWorld, което валидира bcc64x zlib-ng обектите за ABI на C++Builder
HTML справочникът е защитен от tools/test_docs_api_coverage.py, който проверява че всяка публична функция TPDFlib има английска референтна страница, и от tools/test_docs_navigation.py, който пази консистентност на навигационните цели в мултиязичната референция
Readme.html и HTML референцията трябва да останат синхронизирани, когато има промени във видими за потребителя валидации, preflight, рендиране, подписване или поведение на отчетите