1

埋め込まれたFOPトランクを使用してAFPファイルを作成しました。FOPトランクはルート直下のno-operationタグをサポートしていないため、作成したファイルを変更して、ファイルの最初のレコードとしてNOPレコードを追加する必要があります。どのようにこれを行うのですか?

4

2 に答える 2

2

これを FOP の拡張要求として提起することをお勧めします。これは、これを行うための最も現実的な場所である可能性が最も高いです。

FOP 以外の Java AFP 処理ライブラリについては知りません。

于 2011-01-18T14:50:37.050 に答える
0

ファイルの先頭に 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レコード。:-(

于 2012-12-08T20:53:39.400 に答える