Pasirinktinių srauto filtrų registras

HotPDF gali dekoduoti programos apibrėžtus PDF srauto filtrus tame pačiame apribotame vamzdyne, kurį naudoja jo įtaisytieji Flate, LZW, ASCII85, ASCIIHex ir RunLength dekodavimo įrenginiai

Registruokite stūmimo arba traukimo filtrus

Įgyvendinkite IHPDFCustomStreamFilter, pasirinkite csfmPush arba csfmPull ir registruokite sąsają per THotPDF.RegisterCustomStreamFilter

Pavadinimai derinami neskiriant raidžių ir be pirmaujančio pasvirojo brūkšnio, dublikatų registracija yra aiški, įtaisytų pavadinimų pakeisti negalima, o kiekvienas dokumentas priima ne daugiau kaip 64 pasirinktinius pavadinimus

Registro paieškos išlaiko sąsajos momentinę kopiją po trumpa kritine sekcija; filtro atgalinio ryšio kvietimai ir sąsajos sunaikinimas veikia už registro užrakto

Vienas biudžetas per visas fazes

Pasirinktinė išvestis suvartoja DecodeBudgetBytes ir DocumentDecodeBudgetBytes per esamą agreguotą stebėjimo įrenginį, todėl mišri pasirinktinė ir įtaisyta grandinė negali iš naujo nustatyti išplėtimo apskaitos tarp fazių

THPDFCustomStreamFilterRequest.MaxOutputBytes praneša likusį vienai grandinei skirtą leidimą, o nulis reiškia, kad konfigūruoto vienos grandinės biudžeto riba neribota

Užklausa taip pat tiekia dekoduotą PDF filtro pavadinimą, nuo nulio prasidedantį fazės indeksą, vamzdyno gylį, įvesties dydį, kai prieinamas, ir iškvietėjo atšaukimo žetoną

Atšaukimo ir pozicionavimo sutartys

Atšaukimui jautrus DecodeLoadedStreamToStream perrašas tikrina prieš ir po pasirinktinio vykdymo bei traukimo srauto perdavimo metu

Pasirinktinės implementacijos turėtų tikrinti Request.CancellationToken ilgų stūmimo ciklų arba blokuojančių išorinių darbų viduje

csscSeekable deklaruoja, kad pasiskolinta įvestis, stūmimo tikslas arba grąžintas traukimo srautas turi palaikyti pozicijavimą; sutarties pažeidimai sukuria dpsSeekContractViolation

Gedimo izoliacija

Kiekvienas pasirinktinis etapas rašo į apribotus THPDFAdaptiveTempStream prieš paskelbdamas bet kokius baitus kitam etapui arba iškvietėjo tikslui

Netikra suma, išimtis, atšaukimas, pozicijavimo pažeidimas arba biudžeto nesėkmė atmeta tą laikiną išvestį ir grąžina tipizuotą vamzdyno būseną, neleistinas pasirinktinei išimčiai ištekėti per viešą dekodavimo ribą

Sėkmingas traukimo filtras perduoda savo grąžinto srauto nuosavybę HotPDF; grąžinant pasiskolintą įvestį arba nil srautą atmetama

Telemetrija

GetCustomStreamFilterStatistics praneša registruotus pavadinimus, stūmimo ir traukimo bandymus, sėkmę, nesėkmę, atšaukimo ir pozicijavimo pažeidimų skaičius, agreguotus įvesties ir pagamintus baitus bei naujausią pavadinimą ir diagnostiką

THPDFDecodePipelineInfo.CustomFilterCount ir CustomFilterFailureCount apibūdina dabartinę grandinę

Pavyzdys

Filter := TApplicationFilter.Create;
PDF.RegisterCustomStreamFilter(Filter);
try
  if not PDF.DecodeLoadedStreamToStream(StreamObject, Output,
    CancellationToken, Info) then
    HandleDecodeFailure(Info.Status, Info.Diagnostic);
finally
  PDF.UnregisterCustomStreamFilter(Filter.FilterName);
end;

Susijusios API