Advanced AcroForm Processing
HotPDF میتواند فیلدهای بارگذاریشده را دوباره محاسبه کند، appearanceهای متن متغیر مبتنی بر استاندارد را بازتولید کند، حالتهای appearance حاشیهنویسیها را resolve کند و مجموعهای انتخابشده از فیلدها را flatten کند، بدون اینکه صفحههای دستنخورده را دوباره بنویسد
Calculation order
RecalculateLoadedFormFields آرایهٔ /AcroForm /CO بارگذاریشده را دنبال میکند و عملیات محدود AFSimple_Calculate یعنی SUM، AVG، PRD، MIN و MAX را از طریق evaluator امن اسکریپت فیلد ارزیابی میکند
ApplyLoadedFieldCalculation action محاسبه را نصب میکند و فیلد هدف را بدون ورودی تکراری به /CO اضافه میکند
Safe field scripts
EvaluateLoadedFieldJavaScript فقط دستورهای اعلانیِ محاسبه و اعتبارسنجی را که به trigger فیلد درخواستی مربوطاند ارزیابی میکند
- عبارتها مقادیر boolean، عدد، رشته، null، undefined و آرایه را با عملگرهای حسابی، یگانی، مقایسهای، برابری، منطقی short-circuit و شرطی پشتیبانی میکنند
event.valueمعنای ورودی رشتهای را حفظ میکند، در حالی که متن فیلدهای عددی برای سازگاری با محاسبههای موجود عددی باقی میماند- helperهای مجاز (allowlist) تبدیل عدد و رشته، parse کردن، تعدادی از توابع
Math، parse و ساخت تاریخ UTC بهصورت قطعی و بررسی محدود رشته و آرایه را پوشش میدهند AFSimple_Calculate,AFRange_Validate,event.valueassignment, andevent.rcassignment provide deterministic calculation and validation outcomes- حلقهها، ارزیابی پویا، دسترسی به برنامه، ارسال، import، launch و سایر محتوای فعال رد میشوند
- محدودیتها عبارتاند از ۸٬۱۹۲ بایت اسکریپت، ۳۲ دستور، ۴٬۰۹۶ بایت عبارت، ۳۲ سطح parser، ۱٬۰۲۴ عملیات، ۶۴ آرگومان، ۱۲۸ عنصر آرایه، ۶۵٬۵۳۶ بایت رشته و ۲۶۲٬۱۴۴ بایت مقدارهای ردیابیشده
Variable-text appearances
EnsureLoadedFieldAppearanceStream همهٔ widgetها را پیمایش میکند و مقادیر /DA، /Q، /V، /DV، /Ff و /MaxLen را از سلسلهمراتب فیلد یا AcroForm به ارث میبرد
- quadding چپ، وسط و راست از مختصات محلی appearance مربوط به widget استفاده میکند
- Multiline text receives bounded line placement and clipping
- A zero default-appearance font size triggers automatic sizing
- Comb fields place each character independently across
/MaxLencells
Annotation appearance states
GetLoadedAnnotationAppearanceStream appearanceهای normal، rollover یا down را resolve میکند و اگر rollover یا down موجود نباشد به normal برمیگردد
dictionaryهای حالت به این ترتیب عمل میکنند: /AS، سپس /V یا /DV بهارثرسیده، سپس حالت والد، سپس /Off و در آخر fallback به تک stream موجود
Selective flattening
FlattenLoadedFormFields فقط appearanceهای widgetهای انتخابشده را در صفحههای صاحبشان رسم میکند، فقط فیلدها و حاشیهنویسیهای متناظر را حذف میکند و هر صفحه و فیلد دستنخورده را نگه میدارد
The default permission gate refuses structural changes under DocMDP and enforces FieldMDP All, Include, and Exclude locks before any page is modified
PDF.BeginIncrementalUpdate('SignedForm.pdf');
PDF.RecalculateLoadedFormFields;
PDF.FlattenLoadedFormFields(['Subtotal', 'Total']);
PDF.SaveIncrementalUpdate('SignedForm-updated.pdf');