Posetioci operatora sadržaja
HotPDF izlaže svaku operaciju u dekodiranom toku sadržaja kroz interfejs posetioca sa brojanjem referenci i callback događaja Delphi-a bez zahteva da pozivaoci pišu PDF tokenizer
Pregled i merenje
THPDFContentOperatorEventData identifikuje faze početka toka, operatora i kraja toka i izveštava indeks operacije, ime operatora, broj operanada, opseg bajtova i determinističko stanje pre izvršenja trenutnog operatera izvora
Stanje sadrži dubine stanja grafike, objekta teksta, označenog sadržaja i kompatibilne sekcije, dok THPDFContentOperatorView pruža po zahtevu samo čitljive bajtove operacije ili operanda bez kopiranja kompletnog toka izvora
Transformacija ili odbijanje
Callback-ovi biraju coaKeep, coaDelete, coaReplace, coaStop ili coaReject
Akcije brisanja i zamene postaju sortirane nepreklapajuće AST izmene; odbijanje ne objavljuje izlaz, a coaStop uspešno završava nakon trenutnog operatora
Snimci stanja slede originalni prolaz izvora čak i kada se operacija zameni, čineći ponovljeni pregled determinističkim
Budžeti i validacija
THPDFContentOperatorVisitOptions.Default konfiguriše MaxSourceBytes, MaxOperators, MaxLexemes, MaxDepth, MaxReplacementBytes i ValidateOutput
Otkazivanje se proverava tokom prolaza, a transformisani izlaz se ponovo parsira pod istim ograničenjima leksema, dubine i operatora pre nego što može da bude vraćen ili upisan u učitanu stranicu
Neispravan ulaz, nevažeći izlaz zamene, izuzeci callback-a, neuspesi ograničenja i eksplicitno odbijanje razlikuju se po THPDFContentOperatorVisitStatus i dijagnostici
Registracija učitane stranice
PDF.ContentOperatorVisitor := Visitor;
PDF.OnContentOperator := HandleContentOperator;
Options := THPDFContentOperatorVisitOptions.Default;
if PDF.VisitLoadedPageContentOperators(0, True, Options,
CancellationToken, Statistics) then
UseStatistics(Statistics);
Posetilac interfejsa pokreće se pre callback događaja kada su oba dodeljena, a oba se izvršavaju sinhrono na niti pozivaoca
Sa ApplyChanges=True, HotPDF prvo validira kompletni transformisani tok, zatim zamenjuje sadržaj stranice u jednoj izmeni grafa i poništava keševe prevedene liste prikaza, rastera, diska, dekodera fonta i sličica