JBIG2-segmentgrafvalidering
HotPDF validerar inbäddade JBIG2-bild- och JBIG2Globals-strömmar innan en inbyggd eller extern avkodare får ta emot dem
Validatorn utför en begränsad segmentvandring följd av en iterativ beroendegraf-traversering, med indexerad segmentnummeruppslagning i stället för upprepade skanningar
Validera före anpassad bearbetning
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 rapporterar antal segment och kanter, deklarerade nya symboler, maximalt beroendedjup samt strömmen, bytoffseten, segmentnumret och referensnumret som är associerade med det första felet
Budgeterna ligger i posten TJBIG2SegmentGraphValidationOptions vars fält MaxSegments, MaxReferencesPerSegment, MaxTotalReferences, MaxReferenceDepth och MaxSymbols sätter gränserna för varje vandring
Sluttillståndet är ett TJBIG2SegmentGraphValidationStatus-värde som spänner från ej kontrollerad och giltig till avvisade alternativ, huvud- och referensfel, cykler och symbolordlistebrott, och HPDFJBIG2SegmentGraphValidationStatusName renderar det som text
FailureStreamKind använder TJBIG2SegmentStreamKind för att ange huruvida det första felet hittades i globals-strömmen (jbsskGlobals) eller bildströmmen (jbsskImage)
THPDFJBIG2Decoder.LastSegmentGraphValidationInfo behåller samma rapport efter LoadFromByteArray eller LoadRegionFromByteArray
Stäng-felsäkra villkor
Validering avvisar felformade eller trunkerade huvuden, fristående filhuvuden i inbäddade strömmar, förbjudna korta och överdimensionerade långa referenstabeller, duplicerade eller saknade segmentidentifierare, fysiskt framåtberoenden, beroendecykler, överdrivet djup samt konfigurerade överskridanden av segment- eller kantbudgetar
Bildsegment måste använda sidassociation 1, globala segment måste använda sidassociation 0 och ett globalt segment kan inte bero på ett bildsegment
Inbäddade end-of-page-, end-of-file- och färgpalettsegment avvisas, liksom endast-sida region- och sidinformationssegment som placeras i JBIG2Globals
Symbolordlistehuvuden inspekteras före avkodning så att deklarerade nya och exporterade symbolantal, aggregerade indatasymbolpooler och omöjliga exporttotaler misslyckas före bitmappsallokering
Avkodarens och globals-cachens gräns
THPDFJBIG2Decoder, HPDFJBIG2NativeMMRDecode, HPDFJBIG2NativeRegionDecode och inbäddade HPDFJBIG2DecDecodeEx-anrop delar samma policy
De registrerade inbyggda och externa backenden använder redan validerade interna sökvägar, vilket undviker en duplicerad grafvandring vid normal avkodning
THPDFJBIG2GlobalsPool.Register accepterar endast en giltig endast-global segmentström, vilket förhindrar att felformade delade ordlistor kommer in i återanvändning på dokumentnivå
Fristående JBIG2-filer som skickas med Embedded = False behåller sin separata filorienterade avkodningssökväg
Se JBIG2-komprimeringsstöd, THPDFJBIG2Decoder.LoadFromByteArray och THPDFJBIG2Decoder.LoadRegionFromByteArray