Création PDF XFA native automatique
Unité : HPDFXFAHeadless
HPDFXFAWriteHeadlessPDF crée un PDF natif frais directement depuis des octets XDP et une police TrueType fournie par l'application, sans PDF d'entrée ni slots de champs préparés
L'adapteur consomme les callbacks de mise en page XFA existants de binding, d'instances répétées et de pagination et construit des graphes d'objets natifs de pages et AcroForm avec de véritables streams d'apparences à polices embarquées
Les champs de texte, numériques, de dates et de mots de passe, les push buttons, les choix combo et list, les groupes checkbox et radio, le texte statique et les draws de rectangle, ligne, arc et images inline PNG ou JPEG sont consommés ; les signatures et les consommateurs de draws supplémentaires exigent une intégration d'adapteur supplémentaire
La création de choix et de Booléens préserve les valeurs d'affichage et d'export séparées, le comportement éditable et multi-sélection, les états d'apparences natifs et les groupes radio répétés indépendants
Les styles et captions Booléens consomment de véritables marqueurs vectoriels, la taille, les couleurs et épaisseurs de contour, les régions de captions Unicode et les troisièmes états de checkbox
Les graphiques et images natifs consomment de véritables chemins vectoriels, les formats d'échantillons PNG et la transparence, le JPEG baseline ou progressive, l'aspect physique et le placement affine
Les mots de passe utilisent une apparence masquée tout en conservant la valeur native du champ ; l'Editable au niveau du document et l'accès readOnly XFA effectif déterminent les flags natifs des champs
Les coordonnées en points XFA utilisent une origine en haut à gauche et sont converties une fois en rectangles de widgets natifs et translations de draws ; les occurrences répétées séparées reçoivent des noms de champs natifs distincts du moteur de mise en page
Les ressources natives /AP, /DR et /DA sont générées avec la police fournie et la taille, la couleur et l'alignement effectifs ; la face fournie est utilisée pour chaque champ, si bien que la sélection de typeface et les faces de styles multiples relèvent de l'application à ce stade
Utilisez TXFAWidgetRuntime pour exécuter les événements de cycle de vie ou d'interaction et enregistrer le XDP résultant avant la création quand le document exige ces événements ; les ScriptOptions de l'adapteur contrôlent le traitement calculate et validate du moteur de flatten
Préparation et limites
TXFAHeadlessPDFOptions borne les octets XDP et de polices, les octets de sortie et d'objets, les comptes d'objets et de pages, les champs et les unités de glyphes UTF-16 globales
Les budgets d'objets, de pages et de glyphes sont vérifiés avant leurs allocations correspondantes ; les vérifications d'embarquement bornent les streams globaux de polices et d'images, les décodeurs d'images bornent leurs tampons de travail, et la sérialisation native applique les limites d'objets et d'octets de candidats complets
L'annulation est vérifiée tout au long de la création du graphe, de la génération d'apparences et de la sérialisation ; tous les échecs de préparation laissent la position, la longueur et les octets existants du stream de destination inchangés
Le candidat complet est préparé en mémoire avant un appel WriteBuffer unique vers la destination ; les erreurs d'I/O de destination se propagent et peuvent laisser des écritures partielles selon le comportement du stream de l'appelant
La sortie est un nouveau document non signé ; préserver le chiffrement importé, les signatures existantes et les révisions sources relève des APIs natives d'import de documents et de révisions
Acceptation
Tests/Linux/XFAHeadlessCreationTests.pas produit de véritables documents répétés, paginés et globalement read-only, un document XDP enregistré muté par événement et un document de draws Unicode stylé sans ouvrir d'UI de lecteur
Tests/Linux/Verify-XFAHeadlessCreation.py vérifie indépendamment les valeurs natives, les flags de champs, l'appartenance des pages, les ressources /AP et polices embarquées avec pypdf, et le texte réel et les pixels d'apparences rendus avec MuPDF
Tests/Linux/XFAHeadlessChoiceTests.pas et Verify-XFAHeadlessChoice.py ajoutent de vraies valeurs et flags de choix, des parents radio et des identités de scopes répétés, des états d'export réservés, la sauvegarde/recharge runtime et le rollback, et des pixels de sélection rendus
TXFAHeadlessPDFResult rapporte le véritable graphe natif et les comptes de sérialisation