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