Innehållsoperator-visitarer

HotPDF exponerar varje operation i en avkodad innehållsström genom ett referensräknat visitargränssnitt och en Delphi-händelsecallback utan att kräva att anropare skriver en PDF-tokeniserare

Inspektera och mäta

THPDFContentOperatorEventData identifierar begynnelse-ström-, operator- och slut-strömfaserna och rapporterar operationsindex, operatornamn, operandantal, byterintervall och deterministiskt tillstånd före den aktuella källoperatorn körs

Tillståndet innehåller grafikstillstånd-, textobjekt-, markerat-innehåll- och kompatibilitetssektions-djup, medan THPDFContentOperatorView ger on-demand skrivskyddad operation- eller operandbyte utan att kopiera hela källströmmen

Transformera eller avvisa

Callbacks väljer coaKeep, coaDelete, coaReplace, coaStop eller coaReject

Delete- och replace-åtgärder blir sorterade icke-överlappande AST-redigeringar; en avvisning publicerar ingen utdata och coaStop slutförs framgångsrikt efter den aktuella operatorn

Tillståndssnapshots följer den ursprungliga källgenomgången även när en operation ersätts, vilket gör upprepad inspektion deterministisk

Budgetar och validering

THPDFContentOperatorVisitOptions.Default konfigurerar MaxSourceBytes, MaxOperators, MaxLexemes, MaxDepth, MaxReplacementBytes och ValidateOutput

Annullering kontrolleras under genomgången, och transformerad utdata parsas igen under samma lexem-, djup- och operatorgränser innan den kan returneras eller skrivas till en inläst sida

Felformaterad indata, ogiltig ersättningsutdata, callback-undantag, gränsfel och explicit avvisning skiljs åt av THPDFContentOperatorVisitStatus och en diagnostik

Registrering för inlästa sidor

PDF.ContentOperatorVisitor := Visitor;
PDF.OnContentOperator := HandleContentOperator;
Options := THPDFContentOperatorVisitOptions.Default;
if PDF.VisitLoadedPageContentOperators(0, True, Options,
  CancellationToken, Statistics) then
  UseStatistics(Statistics);

Gränssnittsvisitaren körs före händelsecallbacken när båda är tilldelade, och båda körs synkront på den anropande tråden

Med ApplyChanges=True validerar HotPDF den fullständiga transformerade strömmen först och ersätter sedan sidinnehållet i en grafmutation samt ogiltigförklarar cachear för kompilerade visningslistor, raster, disk, teckensnittsavkodare och miniatyrbilder

Relaterade API:er