مرجع HotPDF

يقيّم HotPDF نصوص XFA البرمجية للحساب أثناء تسطيح النموذج، مع مسار FormCalc المحدود المتاح دائمًا، ومسار QuickJS الأوسع الذي يبقى معطَّلًا حتى يفعّله التطبيق صراحةً

FormCalc الموسَّع

تدعم تعبيرات FormCalc العمليات الحسابية، والسلاسل النصية، والقيم المنطقية، ومشغلات المقارنة، وقصر الدارة لـ And وOr وNot، بالإضافة إلى فرع If(condition, whenTrue, whenFalse) الكسول

تقبل Sum وAvg وMin وMax وCount معاملات مختلطة قياسية ومجموعة عُقد SOM، باستخدام مسارات متجذّرة أو مباشرة أو مفهرسة أو بأحرف بدل أو سليلة مثل $record.rows[*].amount؛ يُقيَّم فقط الفرع المختار من If، لذا لا يرفض فرع غير مستخدَم وغير صالح عملية الحساب

يمكن للاستدعاءات المتداخلة أن تجمع نتائج الأعداد والسلاسل ومجموعات العقد، مع دعم حتمي للدوال At وChoose وConcat وLTrim وRTrim وStr وStuff وNull وSign وExp وLog وSin وCos وTan وDeg2Rad وRad2Deg وWithin وOneof

تبقى الدوال المُعرَّفة من المستخدم، والحلقات، والإسناد، وجمل الصورة المحلية (locale picture clauses)، ودوال الشبكة خارج المجموعة الفرعية الأصلية (native subset) وتفشل بأمان (fail closed)

تُرسَل InstanceAdd(name, count) وInstanceRemove(name, index) عبر OnXFAInstanceAction فقط بعد التحقق من صحة المعاملات وميزانية العملية

JavaScript الاختياري

اضبط THotPDF.XFAJavaScriptEnabled إلى True قبل ApplyXFAAsAcroForm أو FlattenLoadedXFA لتشغيل النصوص البرمجية التي تختار contentType الخاص بها JavaScript

يدعم وقت التشغيل تدفق التحكم العادي في JavaScript والمصفوفات المُصنَّفة الأصلية مثل Float64Array، لكنه لا يتلقى أي كائن ملف أو عملية أو شبكة أو متصفح أو تطبيق؛ fetch وXMLHttpRequest وWebSocket وrequire وprocess وDeno غير متاحة

var
  Budgets: THPDFXFAFormScriptBudgets;
begin
  Budgets := THPDFXFAFormScriptBudgets.Default;
  Budgets.MaxElapsedMilliseconds := 100;
  Budgets.JavaScriptMemoryBytes := 8 * 1024 * 1024;
  PDF.XFAFormScriptBudgets := Budgets;
  PDF.XFAJavaScriptEnabled := True;
  PDF.OnXFAInstanceAction := HandleXFAInstanceAction;
  PDF.ApplyXFAAsAcroForm(XDPBytes, False);
end;

JavaScript الاختياري

يتلقى JavaScript كائن this.rawValue قابلًا للتعديل، وevent.value، وواجهة xfa مجمَّدة

JavaScript الاختياري

تحدّ THPDFXFAFormScriptBudgets بايتات النص البرمجي، وعمليات FormCalc، والوقت المنقضي، وعمق التعبير، وعناصر المصفوفة المكررة، وبايتات القيمة، وعمليات النسخ، وذاكرة JavaScript، واستخدام مكدس JavaScript، وفحوصات المقاطعة

توفر ميزانية المكدس حد التكرار، بينما توقف ميزانيتا الوقت والمقاطعة الحلقات غير المنتهية؛ النصوص البرمجية التي تتجاوز أي حد تفشل بأمان وتُلحِق تشخيصًا بـ XFAFlattenWarnings

تُبلغ XFAFlattenScriptsEvaluated وXFAFlattenScriptsRejected وXFAFlattenInstanceOperations عن أحدث مرور للتسطيح

JavaScript الاختياري

تقبل الحمولة الزائدة الموسَّعة لـ HPDFXFAFlatten كائني TXFAFormScriptOptions وTXFAFormInstanceAction مباشرة؛ عيّن TXFAFormScriptOptions.JavaScriptEvaluator لمهايأة ربط QuickJS الثابت أو مقيّم آخر مملوك للتطبيق، مع الاحتفاظ بنفس الغلاف والميزانيات

انظر TXFAFormScriptOptions، TXFAFormScriptLimits، THPDFXFAFormScriptBudgets، وTHPDFXFAInstanceAction