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

PropertyDavranış
name, version, appType, platform, variation, languageEmbedding uygulaması tarafından sağlanan read-only uygulama metadata'sı
numPagesRead-only gerçek layout sayfa sayısı; field widget'ların ötesinde konumlanmış içerik dâhil
currentPageZero-based mevcut sayfa, numPages'e karşı denetlenir; bir field'a focus etmek onun sayfasını seçer
titleUnicode runtime title'ı, MaxValueChars ile sınırlı ve transaction ile yayımlanır
calculationsEnabledOtomatik calculation script'lerini kontrol eder; default true'dur
validationsEnabledDü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

MethodDavranış
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