Procena grafa segmenata JBIG2

HotPDF proverava ugrađene JBIG2 slike i JBIG2Globals tokove pre nego što ih primi izvorni ili spoljni dekoder

Validator obavlja jedan ograničen prolaz kroz segmente praćen iterativnim prelazom grafa zavisnosti, koristeći indeksiranu pretragu po broju segmenta umesto ponovljenih skeniranja

Provera pre prilagođene obrade

Options := DefaultJBIG2SegmentGraphValidationOptions;
Options.MaxSegments := 32768;
Options.MaxTotalReferences := 131072;
Options.MaxReferenceDepth := 512;
Options.MaxSymbols := 500000;

if not HPDFValidateJBIG2SegmentGraph(ImageData, GlobalData,
  Options, Info) then
  raise Exception.Create(string(
    HPDFJBIG2SegmentGraphValidationStatusName(Info.Status)));

TJBIG2SegmentGraphValidationInfo izveštava o brojevima segmenata i ivica, deklarisanim novim simbolima, maksimalnoj dubini zavisnosti i toku, bajt pomaku, broju segmenta i broju reference povezanim sa prvim neuspehom

Budžeti se nalaze u zapisu TJBIG2SegmentGraphValidationOptions čija polja MaxSegments, MaxReferencesPerSegment, MaxTotalReferences, MaxReferenceDepth i MaxSymbols ograničavaju svaki prolaz kroz graf

Završno stanje je vrednost tipa TJBIG2SegmentGraphValidationStatus, od neproverenog i važećeg preko odbijanja opcija, neuspeha zaglavlja i referenci, ciklusa i prekršaja rečnika simbola, a HPDFJBIG2SegmentGraphValidationStatusName ga prikazuje kao tekst

FailureStreamKind koristi TJBIG2SegmentStreamKind da kaže da li je prvi neuspeh pronađen u globals toku (jbsskGlobals) ili u toku slike (jbsskImage)

THPDFJBIG2Decoder.LastSegmentGraphValidationInfo zadržava isti izveštaj nakon LoadFromByteArray ili LoadRegionFromByteArray

Uslovi zatvaranja na neuspeh

Provera odbacuje neispravne ili skraćene zaglavlja, samostalne zaglavlja fajla u ugrađenim tokovima, zabranjene kratke i prevelike duge tabele referenci, duplikate ili nedostajuće identifikatore segmenata, fizički unapred zavisnosti, cikluse zavisnosti, prekomernu dubinu i konfigurisane prekoračenja budžeta segmenata ili ivica

Segmenti slika moraju koristiti asocijaciju stranice 1, globalni segmenti asocijaciju stranice 0 i globalni segment ne može zavisiti od segmenta slike

Ugrađeni segmenti kraja stranice, kraja fajla i palete boja se odbacuju, kao i samo za stranicu regioni i segmenti informacija o stranici smešteni u JBIG2Globals

Zaglavlja rečnika simbola se pregledaju pre dekodiranja tako deklarisanih brojeva novih i izvezenih simbola, agregatnih bazena ulaznih simbola i nemogućih ukupnih izvoza padaju pre dodeljivanja bitmapa

Granica dekodera i keša globusa

THPDFJBIG2Decoder, HPDFJBIG2NativeMMRDecode, HPDFJBIG2NativeRegionDecode i ugrađeni pozivi HPDFJBIG2DecDecodeEx dele istu politiku

Registrovi izvorni i spoljni pozadinski motori koriste već overene unutrašnje puteve, izbegavajući dupli prolaz kroz graf pri normalnom dekodiranju

THPDFJBIG2GlobalsPool.Register prihvata samo važeći tok segmenata samo za globalne, sprečavajući neispravne deljene rečnike da uđu u ponovnu upotrebu na nivou dokumenta

Samostalni JBIG2 fajlovi prosledjeni sa Embedded = False zadržavaju svoj poseban put dekodiranja orijentisan na fajl

Pogledajte podršku za JBIG2 kompresiju, THPDFJBIG2Decoder.LoadFromByteArray i THPDFJBIG2Decoder.LoadRegionFromByteArray