Ograničeni QuickJS runtime
HPDFQuickJS i HPDFQuickJSStatic izlažu istu primenom kontrolisanu JavaScript vrednosnu evaluaciju API na Win32 i Win64
Odaberite režim postavljanja
HPDFQuickJSučitava ABI-neutralan mostquickjs.dlli drži QuickJS vrednosti unutar C kodaHPDFQuickJSStaticpovezuje OMF objekte specifične za platformu u aplikaciju i ne zahteva runtime DLL- Ne uključujte obe jedinice u jedan program jer objavljuju ista imena javnih tipova
Vezivanje DLL prihvata eksplicitnu putanju, vrednost okruženja HOTPDF_QUICKJS_DLL ili direktorijum platforme pronađen ispod pretka izvršnog fajla
Podrazumevane izgradnje smeštaju most na Lib\thirdparty\QuickJS\bin\Win32\quickjs.dll ili Lib\thirdparty\QuickJS\bin\Win64\quickjs.dll
Vrednujte skriptu
uses
HPDFQuickJS;
var
Engine: THPDFQuickJS;
EvalResult: THPDFQuickJSResult;
begin
Engine := THPDFQuickJS.Create;
try
if not Engine.Available then
raise Exception.Create(Engine.LoadError);
EvalResult := Engine.Eval('JSON.stringify([1, 2, 3].map(x => x * 2))');
if not EvalResult.Success then
raise Exception.Create(EvalResult.Error);
finally
Engine.Free;
end;
end;
Eval pretvara finalnu JavaScript vrednost u UTF-8 tekst i čuva Unicode kada vraća Delphi string
EvalInt i EvalFloat dodaju strogu numeričku konverziju bez izlaganja vrednosti motora preko ABI granice
Limiti izvršenja
Limits := THPDFQuickJSLimits.CreateDefault;
Limits.MemoryBytes := 32 * 1024 * 1024;
Limits.StackBytes := 64 * 1024;
Limits.MaxScriptBytes := 256 * 1024;
Limits.TimeoutMs := 250;
Limits.MaxInterruptChecks := 250000;
Engine := THPDFQuickJS.Create(Limits);
Podrazumevane vrednosti dozvoljavaju 64 MiB memorije motora, stek od 64 KiB, UTF-8 skriptu od 1 MiB, jednu sekundu zidnog vremena i milion provera prekida
Win32 statički runtime ograničava nulta ili veća tražena budžeta steka na 48 KiB da ostane unutar kompajler-sigurne granice rekurzije; DLL i Win64 režimi poštuju traženu vrednost direktno
Limiti memorije i steka su širi za ceo runtime dok se limiti skripte, vremena i prekida primenjuju na svako vrednovanje
Status i oporavak
qjsSuccessizveštava o konvertovanom rezultatuqjsScriptErrorizveštava o sintaksnim greškama, bačenim vrednostima i greškama konverzijeqjsTimeLimitiqjsInterruptLimitrazlikuju dva budžeta izvršenjaqjsBusy,qjsInvalidArgument,qjsResourceErroriqjsUnavailablečuvaju greške infrastrukture
Odbijeno ili prekinuto vrednovanje čisti svoj nadolazeći izuzetak i baferi, tako ista instanca motora može da izvrši kasniju važeću skriptu
Jedna instanca motora nije reentrantna; koristite jednu instancu po istovremenom radniku
XFA skriptno pisanje formi
Motor plošćenja XFA ponovo koristi ovaj runtime samo kada je THotPDF.XFAJavaScriptEnabled eksplicitno postavljen; isporučuje ograničenu fasadu podataka, izvorne tipizirane nizove, proverene zahteve instance i nema fajl, proces, pregledač ili mrežne objekte
TXFAFormScriptOptions.JavaScriptEvaluator može da prilagodi statički runtime bez forsiranja statičkih QuickJS objekata u svaku HotPDF aplikaciju
Pogledajte Ograničen XFA FormCalc i JavaScript
Reprodukovljiva izgradnja runtime-a
powershell -ExecutionPolicy Bypass -File Lib\thirdparty\build-quickjs-runtime.ps1
Skripta izgradnje proizvodi i statičke skupove objekata i oba most DLL-a iz objedinjenog izvora, a zatim matrica runtime-a kompajlira i vežba statičke i DLL sonde za Win32 i Win64