XFA Host Model
Stateful xfa.host modelini shipped QuickJS engine üzerinden kullanmak için TXFAWidgetRuntimeOptions.ScriptOptions.EnableJavaScript etkinleştirin
Runtime'ı oluşturmadan önce uygulama metadata'sını TXFAWidgetRuntimeOptions.HostModel üzerinden yapılandırın ve mevcut state'i TXFAWidgetRuntime.HostModel üzerinden okuyun
Property'ler
| Property | Davranış |
|---|---|
name, version, appType, platform, variation, language | Embedding uygulaması tarafından sağlanan read-only uygulama metadata'sı |
numPages | Read-only gerçek layout sayfa sayısı; field widget'ların ötesinde konumlanmış içerik dâhil |
currentPage | Zero-based mevcut sayfa, numPages'e karşı denetlenir; bir field'a focus etmek onun sayfasını seçer |
title | Unicode runtime title'ı, MaxValueChars ile sınırlı ve transaction ile yayımlanır |
calculationsEnabled | Otomatik calculation script'lerini kontrol eder; default true'dur |
validationsEnabled | Düzenlenen value'lar için validation script'lerini kontrol eder; default true'dur |
Uygulama version'ı, embedding uygulamasını tanımlar; kütüphane kendi release numarasını yerine koymaz
Host state, runtime'a aittir; title ve sayfa değişiklikleri orijinal PDF object grafiğini değiştirmez ve kayıtlı XDP data'sına kodlanmaz
Navigation, focus ve data reset
| Method | Davranış |
|---|---|
pageUp(), pageDown() | Sayfa sınırları içinde hareket eder ve ilk veya son sayfada durur |
getFocus() | Canlı focuslu field occurrence'ını döndürür; focus yok, kaldırılmış veya gizlenmişse null döndürür |
setFocus(fieldOrSOM) | Görünür canlı bir field occurrence'ına focus ister; null veya boş metin focus'u temizler |
resetData(paths="") | Virgülle-ayrılmış SOM listesiyle seçilen field'lar için template default value'larını geri yükler; paths boşsa tüm field'lar; tekrar-instance sayıları ve ilgisiz occurrence'lar korunur |
Reset edilen field'lar editing mode'dan çıkar ve geçerli etkileşim state'ini yeniden kazanır; bayat bir edit buffer'ın reset value'sunun üzerine yazmasını önler
Reset ve Data DOM loadXML aynı event içinde çalışabilir; değişiklikleri event transaction'ını paylaşır ve başarısız bir script veya tükenmiş bütçe, yeniden denemeden önce data value'larını, edit buffer'ları, host state'i ve script-object lexical state'ini geri alır
Field identity'leri, bir instance manager tekrarlanan subform'ları yeniden sıraladığında data occurrence'larını izler ve snapshot restoration bu mantıksal identity'leri korur
Focus lifecycle'ı ve transaction'lar
Runtime focus değişiklikleri, bekleyen bir kaynak edit'i commit eder ve doğrular, kaynak exit script'lerini yürütür, yeni field'ı seçer ve calculation ve layout oturmadan önce hedef enter script'lerini yürütür
Enter veya exit script'lerinin yaptığı focus istekleri hedefi yönlendirebilir; her focus drain 64 transition'a izin verir ve script operation ile geçen-süre bütçelerini paylaşır
Script'ler etkinliği xfa.event.name üzerinden görür; calculation'lar ve validation kendi karşılık gelen context adlarını alır
Public FocusWidget ve enter/exit DispatchEvent çağrıları aynı transactional lifecycle'ı kullanır; ClearFocus, exit lifecycle'dan önce kendi mevcut edit buffer'ını iptal eder ve önceki cancellation davranışını korur
OnFocusChanged, commitment sonrasında sıralı callback'ler yayımlar; ara yönlendirmeler transaction içinde kalır ve başarısız script'ler, validation veya bütçeler host state'ini, focus'u, edit buffer'ları, belge value'larını ve script lexical state'ini birlikte geri alır
Options := TXFAWidgetRuntimeOptions.Default;
Options.ScriptOptions.EnableJavaScript := True;
Options.HostModel.Name := 'Application';
Options.HostModel.Version := '1.0';
Options.HostModel.Language := 'en-US';
Runtime := TXFAWidgetRuntime.Create(XDPBytes, 595, 842, Options);
xfa.host.title = "Order form";
xfa.host.setFocus("rows[1].quantity");
xfa.host.resetData("rows[1].quantity,rows[1].price");
xfa.host.calculationsEnabled = false;
Uygulama effect'leri ve kalan kapsam
Dialog'lar, printing, harici navigation, import/export ve HTTP effect'leri, açık uygulama host transport'unu ve kayıtlı response'ları kullanır; state modeli kendisi hiçbir UI veya network operation'ı başlatmaz
Ek host dialog API'leri, her Acrobat host property'si, dinamik eşzamanlı reflow sorguları ve eksiksiz SOM operator'leri ayrı entegrasyon hedefleri olarak kalır
İlgili API'ler: TXFAHostModelState, PXFAHostModelState, HPDFXFAHostModelJavaScript ve Interactive XFA Widget Runtime