PDF/UA-2 struktūros autorystė, tikrinimas ir taisymas

HotPDF gali sukurti, tikrinti ir atomiškai taisyti mišrią PDF 1.7 ir PDF 2.0 struktūros semantiką, išlaikydamas aiškią pavadinimų erdvės tapatybę ir apribotą apdorojimo sąnaudas

Pavadinimų erdvei jautri autorystė

AddStructureElement priskiria PDF 2.0 standarto struktūros pavadinimų erdvę, kai PDF/UA-2 vaidmuo to reikalauja, įskaitant privalomą aukščiausio lygio Document elementą

AddStructureElementNS sukuria aiškiai pavadinimų erdvei priklausančius elementus, o AddStructRoleMapNS prideda pavadinimo arba dviejų elementų masyvo susiejimus, kurie gali išspręsti tranzityviai tarp pavadinimų erdvių ribų

Pavadinimų erdvių žodynai yra netiesioginiai, registruojami vieną kartą pagal URI ir išvedami per StructTreeRoot/Namespaces

Atributai ir semantiniai pagalbininkai

APIPaskirtis
SetStructureAttributeNamePrideda arba pakeičia pavadinimo reikšmės atributą savininkui būdingame žodyne ir gali surišti pasirinktinius savininkus su pavadinimų erdve
SetStructureAttributeNumberPrideda arba pakeičia sveikojo skaičiaus struktūros atributą, pvz., RowSpan arba ColSpan
SetStructureTableCellHeadersĮrašo netuščią Headers masyvą, identifikuojantį lentelės antraštės langelius pagal unikalius ID raktus
SetStructurePronunciationĮrašo paveldėtą PhoneticAlphabet pavadinimą ir tikslaus Phoneme pakeitimą ant PDF 2.0 struktūros elemento
AddPronunciationLexiconĮterpia netiesioginį application/pls+xml failą ir prideda jo Filespec prie StructTreeRoot/PronunciationLexicon paieškos tvarka
AssociateFileWithStructureSusieja netiesioginį Filespec su struktūros elementu per AF
AddAccessibleFormulaSukuria Formula su Alt, ActualText arba abiem
AddAccessibleMathMLFormulaSukuria formulę, įterpia aprašytą application/mathml+xml failą, susieja jį su struktūra ir prideda MathML pavadinimų erdvės vaiką

Apribotas vieno praėjimo tikrinimas

ValidatePDFUA2Structure grąžina kiekvieną išlaikytą diagnostiką THPDFUA2ValidationIssues masyve ir grąžina False, kai bent viena diagnostika turi uisError sunkumą

Tikrintuvas išsprendžia pavadinimų erdvei jautrius vaidmenų susiejimus su ciklo aptikimu ir tikrina aukščiausio lygio dokumentą, tėvo ir vaiko hierarchiją, tėvo atgalines nuorodas, atributų savininkus ir versijas, anotacijos StructParent, tėvų medį ir OBJR nuosavybę, susietus failus, antraštes, sąrašus, lenteles, Ruby, Warichu, tarimo užuominas, formules ir MathML

Dokumento patikros apima specificką Catalog kalbą, pažymėtą būseną, įtartiną būseną, rodomą pavadinimą, XMP pavadinimą ir PDF/UA identifikaciją pagal pavadinimų erdvės URI, Unicode privačios paskirties simbolius žmogaus skaitomose eilutėse ir pasirenkamojo turinio konfigūracijos pavadinimus bei veiksmus

Anotacijos patikros apima puslapio kortelių tvarką, struktūros nuosavybę ir vaidmenis, aprašymus, artefaktų būsenas, išvaizdos srauto pažymėto turinio nuorodas, raiškaus turinio ekvivalentiškumą, failų ryšius ir uždraustus potipius

Formos patikros apima pasiekiamą lauko tapatybę, paveldėtas lauko ypatybes, valdiklio kontekstą ir nuosavybę, etiketes, pakaitinius veiksmus, raiškias reikšmes, pasirinkimo parinktis, nulinio ploto valdiklius, daugiavaldiklius laukus ir XFA uždraudimą

Navigacijos patikros apima struktūros paskirties vietas su SD pirmenybe, kontūrus, įterptų failų aprašymus, įdėtus puslapio numerio etikečių medžius, reikiamą puslapio indeksą nulį, etikečių stilius ir tinkamus etiketes pradedančius numerius

Lentelės tikrinimas teigiamas eilutės ir stulpelio aprėptis išplečia tik MaxObjects ribose, atmeta susikertančius langelius ir netaisyklingą eilutės arba eilučių grupės geometriją, išsprendžia Headers valdančioje lentelėje, aptinka pasikartojančias, save ir ciklines antraštės nuorodas ir numanomas asociacijas priima tik tada, kai jas nustato Scope arba pirmos eilutės ir pirmo stulpelio vieta

Sąrašų tikrinimas atpažįsta visą PDF 2.0 ListNumbering rinkinį, vykdo etikečių semantiką, tikrina ContinuedList ir surikiuotas to paties lygio ContinuedFrom nuorodas bei atmeta tęsimo ciklus arba tiesioginį realų turinį už Lbl ir LBody ribų

Ruby vaikai turi būti RB,RT arba RB,RP,RT,RP, Warichu vaikai turi būti WP,WT,WP, tarimo įrašai išlaiko savo PDF objekto tipus, o kiekvienas tarimo žodynas turi būti netiesioginis įterptas PLS Filespec

Netiesioginių objektų nuskaitymas, peržiūros gylis, vaidmenų susiejimo gylis, išplėsti lentelės langeliai, išlaikytų problemų skaičius ir priešiško rinkinio apdorojimas yra apriboti, todėl tikrinimas išlieka nuspėjamas nepatikimoms struktūros medžiams

Bendros atitikties išvados

THPDFComplianceFindings tikrinimo perkrova grąžina tas pačias diagnostikas su bendru profiliu, sunkumu, stabiliu taisyklės ID, standarto dalimi, loginiu keliu, netiesioginiu objekto numeriu ir nuliu pagrįstu puslapio indeksu

Išsami taisymo perkrova palygina apribotas prieš-taisymo ir po-taisymo išvadas, kad identifikuotų pritaikytus, neišspręstus, atšauktus arba nepavykusius taisymo veiksmus, ir prideda susumuotas taisymo šeimos suvestines

ComplianceFindingsToJSON išlaiko deterministinę tvarką pagal versijų turinčią hotpdf.compliance.findings.v1 schemą ir nežinomus objekto arba puslapio simbolius atvaizduoja kaip null

Atominis struktūros taisymas

RepairPDFUA2Structure vykdomas kopijavimo rašant (copy-on-write) grafiko transakcijos viduje, kanonizuoja pasikartojančius arba neregistruotus pavadinimų erdvių žodynus, perrašo struktūros ir vaidmenų susiejimo pavadinimų erdvės nuorodas, taiso standartines struktūros pavadinimų erdves, normalizuoja struktūros atributų pavadinimų erdves ir versijas bei taiso deterministinius sąrašo, lentelės, Ruby, Warichu, tarimo, pakaitinio teksto, kalbos paveldėjimo, antraščių tvarkos ir Artifact žymos defektus

Po mutacijos tas pats tikrintuvas patikrina kandidato grafą, o numatytoji politika atšaukia visus pakeitimus, kai lieka bent viena PDF/UA-2 klaida

Tikrinimo politika

Pradėkite nuo THPDFUA2ValidationOptions.Default ir keiskite tik darbo eigai būdingus sprendimus

THPDFUA2HeadingPolicy pasirenka antraščių tvarkymą, THPDFUA2IssueSeverity skiria įspėjimus nuo klaidų, o kiekvienas THPDFUA2ValidationIssue neša stabilų kodą, struktūros kelią, sunkumą ir pranešimą

Rekomenduojama darbo eiga

  1. Įjunkite PDFUACompliance, pasirinkite PDFUAPart = 2 ir nustatykite Lang prieš BeginDoc
  2. Sukurkite vieną aukščiausio lygio Document ir sukurkite semantinius vaikus su standartiniais arba aiškiai pavadinimų erdvei priklausančiais vaidmenimis
  3. Registruokite anotacijas ir susietus failus per jų struktūros pagalbininkus, rašykite tarimo užuominas su SetStructurePronunciation ir pridėkite PLS failus pageidaujama paieškos tvarka su AddPronunciationLexicon
  4. Paleiskite ValidatePDFUA2Structure prieš EndDoc, kai programai reikia visų diagnostikų iš karto, iškvieskite RepairPDFUA2Structure deterministiniams pavadinimų erdvės, struktūros ir prieinamumo taisymams bei pasirinkite bendrą išvadų perkrovą, kai CI reikalauja standartinio JSON
  5. Išspręskite kiekvieną klaidą prieš išvestį, nes EndDoc taip pat vykdo griežtą numatytąją politiką PDF/UA-2 dokumentams

Taip pat žiūrėti: Automatinė išdėstymo struktūra, THPDFUA2ValidationOptions, ValidatePDFUA2Structure, RepairPDFUA2Structure, ComplianceFindingsToJSON, SetStructurePronunciation, AddPronunciationLexicon, AddStructureElement, BeginTaggedContentForStructure, AppendStructureMarkedContent