2010-04-09 12 views

Répondre

2

Je suggérerais d'élever ceci comme demande d'amélioration avec FOP. C'est probablement l'endroit le plus réaliste pour y arriver.

Je ne connais aucune bibliothèque de traitement Java AFP sauf celle de FOP.

+0

Cela semble être la meilleure réponse à long terme. – Roboprog

0

Si vous n'avez besoin que d'un enregistrement unique au tout début du fichier, vous pouvez probablement le générer séparément, puis concaténer les deux fichiers ensemble. (Je suppose des enregistrements AFP "nus", SANS aucun enrobage "bloc variable"/VB)

Notez que les enregistrements AFP ont une structure comme celle-ci: 1 octet: x5a (octet de contrôle); 2 octets: indicateur de longueur de 16 bits, qui comprend lui-même, mais pas l'octet "5a"; 3 octets: indicateur de type d'enregistrement; octets restants: données spécifiques à l'enregistrement.

codes de type d'enregistrement sont dans ce document: http://afpcinc.org/site/assets/files/1073/ha3l3r04.pdf

Voici la mise en page pour un enregistrement de NOP (je pense - il a été un certain temps):

x5a + (big-endian/réseau longueur de commande) + xD3 xEE xEE + (EBCDIC) données de chaîne

Par exemple, pour coder la chaîne "FOO = BAR" (hex [46 4f 4f 3d 42 41 52] en ASCII, hex [c6 d6 d6 7e c2 c1 d9 ] dans EBCDIC) comme un NOP:

La longueur de la chaîne est 7, donc nous voulons une longueur totale de 2 + 3 + 7 = 12 (hex 0c)

donc écrire: X5a + [00 0c] + [d3 ee ee] + [c6 d6 d6 7e c2 c1 d9]

Enfin, je Je sais que c'est la mauvaise langue, mais il y a un assez bon analyseur AFP disponible ici: http://metacpan.org/pod/Parse::AFP, qui fournit des définitions de mise en page d'enregistrement de travail, au cas où j'ai oublié un champ dans l'enregistrement NOP. :-(