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
| API | Paskirtis |
|---|---|
SetStructureAttributeName | Prideda arba pakeičia pavadinimo reikšmės atributą savininkui būdingame žodyne ir gali surišti pasirinktinius savininkus su pavadinimų erdve |
SetStructureAttributeNumber | Prideda 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 |
AssociateFileWithStructure | Susieja netiesioginį Filespec su struktūros elementu per AF |
AddAccessibleFormula | Sukuria Formula su Alt, ActualText arba abiem |
AddAccessibleMathMLFormula | Sukuria 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
- Pasikartojantys pavadinimų erdvių URI susitraukia į vieną netiesioginį žodyną tik tada, kai jų pavadinimų erdvei jautrūs vaidmenų susiejimai sutampa
- Tinkamos nukreiptos pavadinimų erdvės gali būti registruojamos be pakartotinio struktūros medžio nuskaitymo
- Standartiniai atributų savininkai nusimeta netinkamus pavadinimų erdvės įrašus, o pasirinktiniai savininkai reikalauja aiškaus
CustomAttributeNamespaceURI, kai jų pavadinimų erdvės negalima nustatyti - Neigiamos arba trupmeninės elementų versijos tampa nuliu, netinkamos atributų masyvo versijos tampa nuliu, o našlaičiai versijos įrašai pašalinami
- Atpažįstamas sąrašo numeravimas atkuriamas, etiketes turintys sąrašai gauna ne-
Nonenumeravimo semantiką, tinkamos tęsimo nuorodos gaunaContinuedList=true, o vienas neteisingai padėtas antraštės tekstas perkeliamas į pirmą vietą - Netinkami lentelės spanai tampa vienu,
Scopepašalinamas iš duomenų langelių, o netinkami, tarp-lentelių, savęs arba pasikartojantysHeadersįrašai pašalinami neišgalvojant pakaitinių asociacijų - Ruby ir Warichu vaikai pertvarkomi tik tada, kai tikslus reikiamas rinkinys jau egzistuoja
- Klaidingai tipo tarimo užuominos pašalinamos, netinkamos žodyno nuorodos apkarpomos, o tinkami įterpti žodyno srautai gauna PLS MIME potipį
- Trūkstamos
Altreikšmės naudoja esamą pavadinimą, išplėtimo tekstą arba to paties MCID ištrauktą tekstą prieš bet kokį skambintojo pateiktą atsarginį variantą, o tuščias numatytasis niekada neišgalvoja aprašymų - Tinkama šaknis arba skambintojo pateikta BCP-47 kalba gali tapti Catalog kalba, kad pertekliniai arba netinkami palikuonių įrašai paveldėtų saugiai
- Pirmos antraštės ir praleistų lygių defektai uždaromi dokumento tvarka, su pasirenkamu nepriklausomu antraštės startu
DocumentFragmentviduje Artifactstruktūros vaidmenys suderinami su jų pažymėto turinio žymomis prodiuserio puslapio turinyje ir įkeltuose turinio srautuose- Dviprasmiška lentelės geometrija, trūkstami semantiniai vaikai, konfliktuojantys identifikatoriai ir neišspręsta skaitymo semantika išlieka klaidomis ir sukelia numatytąjį atšaukimą
MaxObjectsirMaxRepairsnepavyksta uždara prasme prieš nepatikimiems grafams verčiant neribotą darbą
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ą
HeadingPolicygali ignoruoti praleistus lygius, laikyti juos įspėjimais arba reikalauti nuoseklių lygiųAllowDocumentFragmentHeadingStartsatstato antraštės kontekstąDocumentFragmentvidujeCheckDocumentSemanticsįgalina Catalog, metaduomenų, pasirenkamojo turinio ir įterptų failų patikrasCheckHumanReadableStringsatmeta Unicode privačios paskirties simbolius vartotojui rodomose dokumento eilutėseCheckAnnotationSemanticsįgalina anotacijos nuosavybės, vaidmens, išvaizdos, aprašymo ir žymų patikrasCheckFormSemanticsįgalina AcroForm, lauko, valdiklio, reikšmės, etiketės, veiksmo ir parinkties patikrasCheckNavigationSemanticsįgalina struktūros paskirties, kontūro ir puslapio etikečių patikrasRequireListLabelsreikalauja vienoLblsunumeruotiems sąrašo elementamsRequireExplicitTableHeaderAssociationspraneša duomenų langelius, kurie remiasi tik antraštės scope išvedimuCheckListSemanticsįgalina pilno PDF 2.0 numeravimo, tęsimo, antraštės, etiketės, kūno ir turinio vietos patikrasCheckTableSemanticsįgalina apriboto tinklelio, span, eilučių grupės, antraštės scope ir lentelės lokalios asociacijos patikrasCheckRubyWarichuSequencesįgalina tikslaus tiesioginio vaiko sekos patikras Rytų Azijos įterptinėms struktūromsCheckPronunciationHintsįgalina struktūros užuominų ir įterptų PLS žodynų patikrasRequireStructureAssociatedFilesreikalauja, kad kiekvienas katalogo susietas failas būtų pasiekiamas iš struktūros elementoRequireFormulaTextAlternativereikalauja formulės teksto pakaitų, nebent yra susieta MathMLMaxObjectsapriboja netiesioginių objektų nuskaitymą prieš peržiūros pradžiąMaxIssuesapriboja išlaikytą diagnostiką neslėpdamas galutinio sėkmės arba gedimo rezultato
Rekomenduojama darbo eiga
- Įjunkite
PDFUACompliance, pasirinkitePDFUAPart = 2ir nustatykiteLangpriešBeginDoc - Sukurkite vieną aukščiausio lygio
Documentir sukurkite semantinius vaikus su standartiniais arba aiškiai pavadinimų erdvei priklausančiais vaidmenimis - Registruokite anotacijas ir susietus failus per jų struktūros pagalbininkus, rašykite tarimo užuominas su
SetStructurePronunciationir pridėkite PLS failus pageidaujama paieškos tvarka suAddPronunciationLexicon - Paleiskite
ValidatePDFUA2StructurepriešEndDoc, kai programai reikia visų diagnostikų iš karto, iškvieskiteRepairPDFUA2Structuredeterministiniams pavadinimų erdvės, struktūros ir prieinamumo taisymams bei pasirinkite bendrą išvadų perkrovą, kai CI reikalauja standartinio JSON - Išspręskite kiekvieną klaidą prieš išvestį, nes
EndDoctaip 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