埋め込まれたFOPトランクを使用してAFPファイルを作成しました。FOPトランクはルート直下のno-operationタグをサポートしていないため、作成したファイルを変更して、ファイルの最初のレコードとしてNOPレコードを追加する必要があります。どのようにこれを行うのですか?
2 に答える
これを FOP の拡張要求として提起することをお勧めします。これは、これを行うための最も現実的な場所である可能性が最も高いです。
FOP 以外の Java AFP 処理ライブラリについては知りません。
ファイルの先頭に 1 つの単一のレコードのみが必要な場合は、おそらく個別に生成してから、2 つのファイルを連結するだけです。(「変数ブロック」/VB ラッピングなしで、「裸の」AFP レコードを想定しています)
AFP レコードには次のような構造があることに注意してください。1 バイト: x5a (チェック バイト); 2 バイト: 16 ビットの長さのインジケータ。これにはそれ自体が含まれますが、「5a」バイトは含まれません。3 バイト: レコード タイプ インジケータ。残りのバイト: レコード固有のデータ。
レコード タイプ コードはこのドキュメントにあります: http://afpcinc.org/site/assets/files/1073/ha3l3r04.pdf
これは NOP レコードのレイアウトです (私は思うに -- しばらく経っています):
x5a + (ビッグエンディアン/ネットワーク オーダー長) + xD3 xEE xEE + (EBCDIC) 文字列データ
たとえば、文字列 "FOO=BAR" (ASCII では 16 進数 [46 4f 4f 3d 42 41 52]、EBCDIC では 16 進数 [c6 d6 d6 7e c2 c1 d9]) を NOP としてエンコードするには:
文字列の長さは 7 なので、合計の長さは 2 + 3 + 7 = 12 (16 進数の 0c) になります。
したがって、次のように記述します: x5a + [00 0c] + [d3 ee ee] + [c6 d6 d6 7e c2 c1 d9]
最後に、私はそれが間違った言語であることを知っていますが、かなり優れた AFP パーサーがここ にあります: http://metacpan.org/pod/Parse::AFP 。 NOPレコード。:-(