مرجع 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 مجمَّدة
- تقرأ
xfa.get(name, index)قيمة بيانات محصَّلة واحدة - تُعيد
xfa.values(name)نسخة مجمَّدة من كل قيمة مكررة - تُظهر
xfa.resolveNode(name)وxfa.resolveNodes(name)عروضًا للقراءة فقط للقيم الخام - تُصفِّف
xfa.addInstance(name, count)وxfa.removeInstance(name, index)استدعاءات callback مضيفة مُتحقَّق منها
JavaScript الاختياري
تحدّ THPDFXFAFormScriptBudgets بايتات النص البرمجي، وعمليات FormCalc، والوقت المنقضي، وعمق التعبير، وعناصر المصفوفة المكررة، وبايتات القيمة، وعمليات النسخ، وذاكرة JavaScript، واستخدام مكدس JavaScript، وفحوصات المقاطعة
توفر ميزانية المكدس حد التكرار، بينما توقف ميزانيتا الوقت والمقاطعة الحلقات غير المنتهية؛ النصوص البرمجية التي تتجاوز أي حد تفشل بأمان وتُلحِق تشخيصًا بـ XFAFlattenWarnings
تُبلغ XFAFlattenScriptsEvaluated وXFAFlattenScriptsRejected وXFAFlattenInstanceOperations عن أحدث مرور للتسطيح
JavaScript الاختياري
تقبل الحمولة الزائدة الموسَّعة لـ HPDFXFAFlatten كائني TXFAFormScriptOptions وTXFAFormInstanceAction مباشرة؛ عيّن TXFAFormScriptOptions.JavaScriptEvaluator لمهايأة ربط QuickJS الثابت أو مقيّم آخر مملوك للتطبيق، مع الاحتفاظ بنفس الغلاف والميزانيات
انظر TXFAFormScriptOptions، TXFAFormScriptLimits، THPDFXFAFormScriptBudgets، وTHPDFXFAInstanceAction