Radnici kodeka izolirani od pada
HotPDF može premjestiti dekodiranje slika visokog rizika DCTDecode, JPXDecode i JBIG2Decode iz procesa domaćina
Načini izolacije
cimAutomaticje zadan i koristiHotPDFCodecWorker.exekada je dostupan uz izvršnu datoteku domaćina, a inače čuva kompatibilnu unutarnju putanjucimRequiredne uspijeva zatvoren kada radnik nedostaje, ne može se pokrenuti, ruši se, prekoračuje vremensko ograničenje, odbija ulaz ili premaši ograničenje izlazacimDisableduvijek koristi postojeće dekodere u procesu
Kada dostupni radnik prihvati zahtjev, cimAutomatic ne ponavlja neuspjeli ili zlonamjerni ulaz u procesu domaćina
Granica procesa
Svaki zahtjev dekodiranja pokreće se u svježem skrivenom procesu dodijeljenom predmetu Windows Job Object s jednim procesom
- Job Object prekida radnika i sve pokušane potomke kada se njegova ručka zatvori
CodecWorkerMemoryLimitBytesprimjenjuje gornju granicu memorije po procesu i standardno iznosi 512 MiBCodecWorkerTimeoutMillisecondsstandardno iznosi 10 000 ms i prekida radnika koji je zapeo- Kodirani ulaz, opcionalne JBIG2 globalnosti i BGR24 izlaz koriste jedno mapiranje dijeljene memorije sa slučajnim nazivom i verzioniranim protokolom fiksne širine
- Kapacitet dekodiranog izlaza ograničen je deklariranom geometrijom slike i
DecodeBudgetBytes - JPEG zahtjevi niske razlučivosti nose točne ciljne dimenzije i vraćaju geometriju smanjenog DCT-a bez konstruiranja rastersk šira pune razlučivosti radnika
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 razrješuje se na HotPDFCodecWorker.exe uz trenutnu aplikaciju
Telemetrija
GetLastCodecWorkerInfo izvještava o statusu, identifikatoru procesa, izlaznom kodu, proteklim milisekundama i ograničenoj dijagnostici na strani domaćina
GetLastJPEGReducedDecodeInfo izvještava o izvornoj, skaliranoj, izlaznoj geometriji i geometriji skenlinija nakon izoliranog smanjenog JPEG zahtjeva
Različiti statusi pokrivaju nedostupne ili nepokretljive radnike, vremensko ograničenje, pad, odbijanje dekodiranja, nepodudaranje protokola i ograničenja dekodiranog izlaza
Izgradnja i implementacija
build-HotPDF-Codec-Worker.cmd
Naredba izgradnje emitira zasebne Win32 i Win64 radnike pod tools\CodecWorker\<platform>\Release; implementirajte radnika koji odgovara arhitekturi procesa domaćina