임베디드 FOP 트렁크를 사용하여 AFP 파일을 만들었습니다. FOP 트렁크는 root에서 직접 no-operation 태그를 지원하지 않기 때문에 파일의 첫 번째 레코드로 NOP 레코드를 추가하기 위해 생성 된 파일을 수정해야합니다. 어떻게하면됩니까?Java를 사용하여 AFP 파일에 NOP 레코드를 추가하는 방법이 있습니까?
답변
FOP를 사용하여 향상 요청을 제기하는 것이 좋습니다. 이것이 가장 현실적인 장소입니다.
저는 FOP를 제외한 모든 Java AFP 처리 라이브러리를 알지 못합니다.
파일의 처음 부분에 하나만 싱글 레코드가 필요한 경우에는 별도로 생성 한 다음 두 파일을 함께 연결하면됩니다. ("가변 블록"/ VB 랩핑없이 "알몸"AFP 레코드라고 가정합니다.)
AFP 레코드의 구조는 다음과 같습니다. 1 바이트 : x5a (확인 바이트); 2 바이트 : 자체를 포함하지만 "5a"바이트는 포함하지 않는 16 비트 길이 표시기. 3 바이트 : 레코드 유형 지시자; 나머지 바이트 : 레코드 특정 데이터.
기록 형 코드는이 문서에 있습니다 여기에
http://afpcinc.org/site/assets/files/1073/ha3l3r04.pdf는 NOP 레코드의 레이아웃입니다 (내 생각 - 그것은 오랜만이야) :
X5a 내지 + (빅 엔디안/네트워크 순서 길이) + xD3 xEE xEE + (EBCDIC) 문자열 데이터
예를 들어, 문자열 "FOO = BAR"(16 진수 [46 4f 4f 3d 42 41 52])을 ASCII로 인코딩하려면 16 진수 [c6 d6 d6 7e c2 c1 d9 ]에서 EBCDIC로) NOP :
문자열 길이가 7이므로 총 길이가 필요합니다. 2 + 3 + 7 = 12 (16 진수의 0C)
그래서 해주기 X5a 내지 + [00 0C] + [D3 EE EE] + [C6 D6의 D6의 7E의 C2의 C1에 D9 마지막
, I 틀린 언어라는 것을 알았지 만 여기서는 꽤 좋은 AFP 파서가 있습니다 : http://metacpan.org/pod/Parse::AFP, NOP 레코드의 필드를 잊어 버린 경우를 대비하여 작업 레코드 레이아웃 정의를 제공합니다. :-(
장기적으로 가장 좋은 대답 인 것 같습니다. – Roboprog