Авторинг, валидация и поправка на PDF/UA-2 структури

HotPDF може да изгражда, валидира и атомарно поправя смесени семантики на структури от PDF 1.7 и PDF 2.0, като запазва изрична namespace самоличност и ограничена цена на обработката

Авторинг, чувствителен към namespace

AddStructureElement задава стандартното структурно namespace на PDF 2.0, когато роля за PDF/UA-2 го изисква, включително задължителния елемент от най-горно ниво Document

AddStructureElementNS създава елементи с изрични namespace, а AddStructRoleMapNS добавя съпоставяния по име или двумасив, които могат да се разрешават транзитивно през граници на namespace

Namespace речниците са непряки, регистрират се еднократно по URI и се излъчват чрез StructTreeRoot/Namespaces

Атрибути и семантични помощници

APIПредназначение
SetStructureAttributeNameДобавя или замества атрибут със стойност-име в речник, специфичен за собственика, и може да обвързва собствени потребители към namespace
SetStructureAttributeNumberДобавя или замества структурен атрибут с целочислена стойност като RowSpan или ColSpan
SetStructureTableCellHeadersЗаписва непразен масив Headers, който идентифицира заглавните клетки на таблица по уникални стойности ID
SetStructurePronunciationЗаписва наследяемо име PhoneticAlphabet и точно заместване Phoneme върху структурен елемент на PDF 2.0
AddPronunciationLexiconВгражда непряк файл application/pls+xml и добавя неговия Filespec към StructTreeRoot/PronunciationLexicon в реда на търсене
AssociateFileWithStructureАсоциира непряк Filespec със структурен елемент чрез AF
AddAccessibleFormulaСъздава Formula с Alt, ActualText или и двете
AddAccessibleMathMLFormulaСъздава формула, вгражда описан файл application/mathml+xml, асоциира го със структурата и добавя наследник с MathML namespace

Ограничена еднофазова валидация

ValidatePDFUA2Structure връща всяка задържана диагностика в масив THPDFUA2ValidationIssues и връща False, когато поне една диагностика има тежест uisError

Валидаторът разрешава role map-ове, чувствителни към namespace, с откриване на цикли, и проверява документа от най-горно ниво, йерархията родител-наследник, обратните връзки към родители, собствениците и ревизиите на атрибути, StructParent на анотации, собствеността на parent tree и OBJR, асоциираните файлове, заглавията, списъците, таблиците, Ruby, Warichu, подсказките за произношение, формулите и MathML

Проверките на документа покриват конкретен език в Catalog-а, статус marked, статус suspect, показвано заглавие, XMP заглавие и PDF/UA идентификация по namespace URI, Unicode символите от частната зона в човешки-четими низове и имената и действията в optional content конфигурации

Проверките на анотациите покриват tab order на страницата, собствеността и ролите в структурата, описанията, състоянията на артефакти, референциите към маркирано съдържание в appearance stream, еквивалентността на rich съдържание, връзките с файлове и забранените подтипове

Проверките на формуляри покриват достигаема самоличност на полета, наследени свойства на полета, контекста и собствеността на уиджети, етикети, алтернативни действия, rich стойности, опции за избор, уиджети с нулева площ, полета с много уиджети и забраната за XFA

Проверките за навигация покриват структурни дестинации с приоритет на SD, отметките, описанията на вградени файлове, вложените числови дървета на етикети за страници, изисквания номер на страница нула, стиловете на етикети и валидните начални номера на етикети

Табличната валидация разгъва положителни размахи на редове и колони само в рамките на MaxObjects, отхвърля пресичащи се клетки и нередовна геометрия на редове или групи от редове, разрешава Headers в рамките на притежаващата таблица, открива дублирани, собствени и циклични заглавни референции и приема неявни асоциации само когато Scope или позицията на първия ред и първата колона ги определят

Списъчната валидация разпознава пълния набор ListNumbering на PDF 2.0, налага семантика на етикетите, проверява ContinuedList и подредените на същото ниво референции ContinuedFrom и отхвърля цикли на продължение или директно истинско съдържание извън Lbl и LBody

Наследниците на Ruby трябва да са RB,RT или RB,RP,RT,RP, на Warichu — WP,WT,WP, записите за произношение запазват PDF типовете си обекти, а всеки лексикон за произношение трябва да бъде непряк вграден Filespec от тип PLS

Сканирането на непряки обекти, дълбочината на обхождане, дълбочината на role map, разгънатите таблични клетки, броят задържани проблеми и обработката на враждебни колекции са ограничени, така че валидацията остава предвидима за недоверени структури

Споделени находки за съответствие

Overload-ът за валидация с THPDFComplianceFindings връща същата диагностика със споделен профил, тежест, стабилен ID на правило, клауза от стандарта, логически път, номер на непряк обект и индекс на страница от нулева база

Детайлният overload за поправка сравнява ограничени находки преди и след поправката, за да идентифицира приложени, неразрешени, върнати назад или провалени действия, и добавя обобщения по семейства поправки с бройки

ComplianceFindingsToJSON запазва детерминистичен ред под версионираната схема hotpdf.compliance.findings.v1 и представя неизвестни местоположения на обект или страница като null

Атомарна структурна поправка

RepairPDFUA2Structure работи в рамките на copy-on-write транзакция върху графа, канонизира дублирани или нерегистрирани namespace речници, презаписва namespace референциите на структури и role map-ове, поправя стандартните структурни namespace, нормализира namespace и ревизии на структурни атрибути и поправя детерминистични дефекти в списъци, таблици, Ruby, Warichu, произношение, алтернативен текст, наследяване на език, ред на заглавия и тагове на артефакти

След промяната същият валидатор проверява кандидат-графа, а политиката по подразбиране връща всички промени назад, когато остане поне една грешка по PDF/UA-2

Политика на валидация

Започнете с THPDFUA2ValidationOptions.Default и променете само решенията, специфични за процеса

THPDFUA2HeadingPolicy избира третирането на заглавия, THPDFUA2IssueSeverity различава предупреждения от грешки, а всяка THPDFUA2ValidationIssue носи стабилен код, път в структурата, тежест и съобщение

Препоръчителен процес

  1. Включете PDFUACompliance, изберете PDFUAPart = 2 и задайте Lang преди BeginDoc
  2. Създайте един Document от най-горно ниво и изграждайте семантични наследници със стандартни или изрично namespaced роли
  3. Регистрирайте анотации и асоциирани файлове чрез структурните им помощници, записвайте подсказки за произношение с SetStructurePronunciation и добавяйте PLS файлове в желания ред на търсене с AddPronunciationLexicon
  4. Пуснете ValidatePDFUA2Structure преди EndDoc, когато приложението има нужда от цялата диагностика наведнъж, извикайте RepairPDFUA2Structure за детерминистични поправки на namespace, структура и достъпност, и изберете overload-а със споделени находки, когато CI иска стандартен JSON
  5. Разрешете всяка грешка преди изхода, защото EndDoc налага и строгата политика по подразбиране за PDF/UA-2 документи

Вижте също: Автоматична PDF/UA структура от дървета на оформлението, THPDFUA2ValidationOptions, ValidatePDFUA2Structure, RepairPDFUA2Structure, ComplianceFindingsToJSON, SetStructurePronunciation, AddPronunciationLexicon, AddStructureElement, BeginTaggedContentForStructure, AppendStructureMarkedContent