Visitor Operator Konten

HotPDF mengekspos setiap operasi dalam stream konten terdekode melalui antarmuka visitor yang dihitung referensinya dan callback peristiwa Delphi tanpa mengharuskan pemanggil menulis tokenizer PDF

Periksa dan ukur

THPDFContentOperatorEventData mengidentifikasi fase begin-stream, operator, dan end-stream serta melaporkan indeks operasi, nama operator, jumlah operan, rentang byte, dan status deterministik sebelum operator sumber saat ini dieksekusi

Status berisi kedalaman status grafis, objek teks, konten bertanda, dan bagian kompatibilitas, sementara THPDFContentOperatorView menyediakan byte operasi atau operan read-only sesuai permintaan tanpa menyalin stream sumber lengkap

Transformasi atau penolakan

Callback memilih coaKeep, coaDelete, coaReplace, coaStop, atau coaReject

Aksi delete dan replace menjadi edit AST non-tumpang tindih terurut; penolakan tidak menerbitkan keluaran dan coaStop selesai dengan sukses setelah operator saat ini

Snapshot status mengikuti traversal sumber asli bahkan ketika operasi diganti, membuat pemeriksaan berulang deterministik

Anggaran dan validasi

THPDFContentOperatorVisitOptions.Default mengonfigurasi MaxSourceBytes, MaxOperators, MaxLexemes, MaxDepth, MaxReplacementBytes, dan ValidateOutput

Pembatalan diperiksa selama traversal, dan keluaran yang ditransformasi diurai lagi di bawah batas lexeme, kedalaman, dan operator yang sama sebelum dapat dikembalikan atau ditulis ke halaman yang dimuat

Input salah bentuk, keluaran pengganti tidak valid, pengecualian callback, kegagalan batas, dan penolakan eksplisit dibedakan oleh THPDFContentOperatorVisitStatus dan diagnostik

Pendaftaran halaman yang dimuat

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

Visitor antarmuka berjalan sebelum callback peristiwa ketika keduanya ditetapkan, dan keduanya dieksekusi secara sinkron pada thread pemanggil

Dengan ApplyChanges=True, HotPDF memvalidasi stream yang ditransformasi lengkap terlebih dahulu, lalu mengganti konten halaman dalam satu mutasi graph dan membatalkan cache display-list, raster, disk, font-decoder, dan thumbnail yang dikompilasi

API terkait