Runtime XFA portable

Le modèle de données, layout et événements natif de TXFAWidgetRuntime s'exécute avec Delphi ou FPC sur Windows et avec FPC sur Linux x86-64

L'exécution du noyau Linux n'exige ni LCL, ni session de bureau, ni couche de compatibilité Windows ; le build FPC Windows conserve son initialisation RTL Lazarus UTF-8 existante

Pont JavaScript natif

bash tools/Build-HotPDFQuickJSLinux.sh /var/tmp/hotpdf-native
export HOTPDF_QUICKJS_DLL=/var/tmp/hotpdf-native/libhpdfquickjs.so
export HOTPDF_SUPPRESS_AUTO_LAUNCH=1

Le pont Linux se construit à partir des sources QuickJS livrées avec une compilation compatible GCC et utilise la même ABI HPDFQJS versionnée que la DLL Windows

QuickJSDLLPath et HOTPDF_QUICKJS_DLL acceptent un chemin de bibliothèque partagée explicite sous Linux ; les noms d'API existants sont préservés pour la compatibilité source

La découverte par défaut vérifie libhpdfquickjs.so à côté de l'exécutable et Lib/thirdparty/QuickJS/bin/Linux64 dans les répertoires ancêtres de l'exécutable

Chaque session détient une référence vers son module chargé exact jusqu'à ce que son moteur natif, ses contextes et callbacks soient libérés ; les sessions conservent un état de script et des journaux indépendants

Des horloges monotones natives appliquent les budgets existants d'événements, XML et layout ; les valeurs d'epoch déterministes, réponses aléatoires et réponses de transport externes restent enregistrées et rejouées transactionnellement

Locales Linux

Le backend de locale Linux natif lit les noms de calendriers ICU système, symboles décimaux et de groupement, symboles et codes de devises, marqueurs AM/PM, et motifs de nombres/dates/heures

Les locales nommées utilisent des identifiants BCP47 pleinement parsés et des données de langue ICU connues ; les séparateurs underscore sont canonisés, et les langues non prises en charge ou identifiants malformés retournent False

Un nom vide sélectionne la locale par défaut configurée d'ICU ; les définitions localeSet du document et les providers de locale applicatifs explicites conservent leur priorité existante

libicuuc et libicui18n sont tous deux requis ; le loader résout les versions d'exports ICU correspondantes, y compris les bibliothèques runtime versionnées sans symlinks de développement

ICU et Windows peuvent fournir des motifs régionaux et des espaces différents selon leurs données de locale installées ; des définitions de locale explicites du document peuvent sélectionner un formatage applicatif déterministe

Persistance et consommateurs PDF

SaveToBytes persiste le XDP natif, y compris les imports du Data DOM, les valeurs par instance, les mappages de namespaces, les commentaires et instructions de traitement, avec le même comportement de rollback sur les deux plateformes

Une fixture consommatrice de XDP sauvegardé Linux recharge TXFAWidgetRuntime et applique ses valeurs réelles via les setters de champs de THPDFHeadlessDocument et la génération d'apparences natives

Ce consommateur utilise un template de champs PDF préparé indépendamment ; la création automatique de champs XFA-vers-PDF sous Linux et le rendering interactif complet restent des travaux d'intégration séparés