Radnici kodeka izolovani od rušenja
HotPDF može da premesti rizično DCTDecode, JPXDecode i JBIG2Decode dekodiranje slika izvan host procesa
Režimi izolacije
cimAutomaticje podrazumevan i koristiHotPDFCodecWorker.exekada je dostupan pored host izvršnog fajla, inače zadržava kompatibilan put unutar procesacimRequiredne uspeva zatvoreno kada radnik nedostaje, ne može da se pokrene, ruši se, istekne vreme, odbije ulaz ili prekorači ograničenje izlazacimDisableduvek koristi postojeće dekodere unutar procesa
Jednom kada dostupni radnik prihvati zahtev, cimAutomatic ne ponavlja neuspele ili zlonamerne ulaze u host procesu
Granica procesa
Svaki zahtev za dekodiranje pokreće se u svežem skrivenom procesu dodeljenom Windows Job Object-u sa jednim procesom
- Job Object prekida radnika i sve pokušane potomke kada se njegov handle zatvori
CodecWorkerMemoryLimitBytesprimenjuje plafon zauzete memorije po procesu i podrazumevano je 512 MiBCodecWorkerTimeoutMillisecondspodrazumevano je 10 000 ms i prekida zaglavljenog radnika- Kodirani ulaz, opcioni JBIG2 globali i BGR24 izlaz koriste jedno deljeno preslikavanje memorije nasumičnog imena sa verzionisanim protokolom fiksne širine
- Kapacitet dekodiranog izlaza ograničen je deklarisanom geometrijom slike i
DecodeBudgetBytes - Zahtevi za JPEG niske rezolucije nose tačne ciljne dimenzije i vraćaju reduced-DCT geometriju bez konstruisanja rastera radnika pune rezolucije
Konfiguracija
PDF.CodecIsolationMode := cimRequired;
PDF.CodecWorkerExecutable :=
'C:\Program Files\MyApp\HotPDFCodecWorker.exe';
PDF.CodecWorkerTimeoutMilliseconds := 5000;
PDF.CodecWorkerMemoryLimitBytes := 256 * 1024 * 1024;
Bitmap := PDF.ExtractLoadedImage(0);
if Bitmap = nil then
begin
PDF.GetLastCodecWorkerInfo(Info);
Writeln(Ord(Info.Status), ': ', Info.ErrorMessage);
end;
Prazan CodecWorkerExecutable razrešava se na HotPDFCodecWorker.exe pored trenutne aplikacije
Telemetrija
GetLastCodecWorkerInfo izveštava status, identifikator procesa, kod izlaza, protekle milisekunde i ograničenu dijagnostiku host strane
GetLastJPEGReducedDecodeInfo izveštava geometriju izvora, skaliranja, izlaza i skeniranja nakon izolovanog reduced JPEG zahteva
Različiti statusi pokrivaju nedostupne ili nepokretljive radnike, istek vremena, rušenje, odbijanje dekodiranja, neusklađenost protokola i ograničenja dekodiranog izlaza
Formiranje i raspoređivanje
build-HotPDF-Codec-Worker.cmd
Komanda formiranja emituje odvojene Win32 i Win64 radnike pod tools\CodecWorker\<platform>\Release; rasporedite radnika koji odgovara arhitekturi host procesa