Graphiques et images XFA natifs automatiques

Unité : HPDFXFAHeadless

HPDFXFAWriteHeadlessPDF consomme les callbacks draw de rectangle, ligne, arc et images inline directement depuis le XDP, aux côtés des consommateurs de texte et de widgets existants

Chaque draw produit un Form XObject natif placé sur la page de mise en page réelle ; les draws d'images contiennent de véritables Image XObjects et des soft masks alpha quand nécessaire

Chemins vectoriels

Les rectangles utilisent des chemins rectangle PDF natifs, les lignes préservent la pente slash ou backslash, et les arcs elliptiques utilisent des segments cubiques d'au plus 90 degrés

Le premier edge effectif fournit la couleur de trait RGB et l'épaisseur, y compris les largeurs inférieures au point ; les bornes d'apparence du trait incluent la moitié de l'épaisseur pour que le form ne rogne pas sa propre bordure

Les arcs consomment startAngle et sweepAngle signé, avec une révolution complète par défaut et un sweep absolu maximal de 360 degrés

Les indications de rotation, d'échelle et de translation du draw sont appliquées une fois dans un placement affine fini autour du centre du draw, avec une rotation positive antihoraire ; les coordonnées XFA en haut à gauche sont converties une fois vers l'origine PDF native

PNG et JPEG

FormatConsommation native réelle
PNG niveaux de grisÉchantillons 1, 2, 4, 8 et 16 bits, avec les échantillons packed étendus à 8 bits et la précision 16 bits conservée
PNG RGBÉchantillons couleur 8 et 16 bits
PNG couleur indexéeIndices 1, 2, 4 et 8 bits étendus à travers la palette en échantillons RGB
PNG transparenceÉchantillons transparents niveaux de gris et RGB, alpha de palette, et grayscale-alpha et RGBA 8 ou 16 bits ; des streams /SMask réels préservent la précision alpha
PNG filtrage et entrelacementLes cinq filtres de lignes PNG et les passes Adam7, validés via les implémentations zlib et predictor natives partagées
JPEGFrames niveaux de gris, RGB et CMYK baseline et progressive 8 bits, validées avec le décodeur JPEG natif partagé avant de préserver le stream /DCTDecode d'origine

Les checksums de chunks PNG, l'ordre, les dimensions, les indices de palette, les plages d'échantillons transparents et la longueur décompressée exacte sont vérifiés avant de valider un candidat ; des données compressées tronquées ou excédentaires font échouer la préparation

Les dimensions des frames JPEG doivent concorder avec le décodage natif réel, et l'inversion CMYK Adobe est déclarée explicitement dans le dictionnaire d'image

JPEG exige le runtime TurboJPEG natif existant ; HOTPDF_TURBOJPEG_LIBRARY peut identifier un chemin de bibliothèque absolu, les bibliothèques dépendantes étant découvrables par le système d'exploitation

L'aspect d'image prend en charge fit, none, width, height et actual ; les pHYs PNG et la densité JFIF JPEG déterminent la taille physique des pixels, avec 96 dpi utilisés quand aucune densité utilisable n'existe

Les images mises à l'échelle sont centrées et rognées au rectangle draw XFA ; la composition alpha reste une opération de lecteur PDF native

Bornes et transaction

Les octets d'images encodées, les tampons de travail décodés et les streams bruts d'images ou d'alpha sont bornés avant allocation ; les limites d'objets natives et les limites globales de streams d'images et de polices restent actives

L'annulation est vérifiée pendant le parsing des chunks, le gonflage des données, le décodage des lignes et le placement des objets natifs ; le décodeur JPEG natif existant reçoit le token de l'appelant

Les échecs de préparation préservent la position, la longueur et les octets de destination ; le WriteBuffer final vers la destination suit les sémantiques d'I/O propres au stream de l'appelant

Limites actuelles

Les formes remplies, le style des coins, les bordures propres aux edges, les motifs de dash, les codes-barres, le transport d'images externes, les widgets imageEdit, les formats d'images alternatifs, les profils colorimétriques embarqués et l'orientation Exif exigent toujours une intégration de consommateur supplémentaire

Le PNG animé est consommé comme son image statique par défaut ; l'exData XML étranger reste une fonctionnalité séparée, et cet adapteur de draw n'exécute pas d'objets embarqués arbitraires

Acceptation

Tests/Linux/Build-XFAHeadlessGraphicFixtures.py produit des fixtures déterministes de filtres de lignes, Adam7, précision d'échantillons, transparence, aspect physique, JPEG et protocole malformé

Tests/Linux/XFAHeadlessGraphicsTests.pas écrit et rouvre de véritables PDF natifs et vérifie la préservation de l'appelant en cas d'échec ; Verify-XFAHeadlessGraphics.py vérifie indépendamment les échantillons d'images décodés, la précision /SMask, les opérateurs vectoriels, le placement et les pixels rendus avec pypdf et MuPDF

Création PDF XFA native automatique décrit les consommateurs de champs et de texte existants et les APIs publiques d'options et de résultats