2014-07-16 4 views
1

서블릿에서 편집 가능한 PDF를 생성 중입니다. 사용자가 데이터를 입력하고 제출 버튼을 클릭합니다. 제출 단추에 대한 조치는 "button.setAction (PdfAction.createSubmitForm ("/ fdf ", null, PdfAction.SUBMIT_XFDF))"으로 정의됩니다.서블릿에서 입력 스트림을 읽을 때 'com.itextpdf.text.exceptions.InvalidPdfException : PDF 헤더 서명을 찾을 수 없습니다.'

FdfReader reader = new FdfReader (request.getInputStream())를 사용하여 양식 필드를 다시 읽으려고하면 위의 'PDF 헤더 서명을 찾을 수 없음'오류가 계속 발생합니다. 오류가 발생한 곳의 디버깅에서 생성 된 pdf에 '% PDF-'가 있습니다. 하지만 어떻게 든 inputstream 읽을 때이 오류가 발생합니다.

도움을 주시면 감사하겠습니다.

답변

1

데이터를 XFDF (XML 버전의 FDF)로 제출한다고 말합니다. 그러나 XfdfReader 대신 FdfReader을 사용하여이 데이터를 읽으십시오. FdfReader은 PDF 구문으로 작성되고 %PDF-1으로 시작하는 파일을 필요로합니다. 당신은 XML로 작성된 파일을 수신하고 함께 그 시작 : <?xml

<?xml version="1.0" encoding="UTF-8"?> 
<xfdf xmlns="http://ns.adobe.com/xfdf/" xml:space="preserve"> 

합니다 (PDF 헤더 서명 인) %PDF-1는 상당히 다른, 당신은 오류에 놀라게해서는 안된다. FdfReader에게 보내는 데이터에 무엇이 잘못되었는지 정확하게 말합니다.

FdfReaderXfdfReader으로 바꾸면 문제가 해결됩니다.

+0

대단히 감사드립니다. 예, '헤더 서명'에 대한 서버 측 오류가 더 이상 표시되지 않습니다. 그러나 클라이언트 측의 어도비 리더는 "제출 프로세스 중에 오류가 발생했습니다. 유형의 컨텐트를 처리 할 수 ​​없습니다."오류 대화 상자를 계속 표시합니다. 나는 이것이 서버 측 오류로 인한 것이라고 생각했다. 그러나이 대화 상자는 서버 측 오류가없는 경우에도 계속 표시됩니다. Adobe Reader XI를 사용하고 있습니다. 저에게 알려주세요. 또한 정말 놀랍도록 간단한 PDF API를 사용해 주셔서 감사합니다. – user3207455

+0

서버 측 코드가 브라우저에 보내는 내용은 무엇입니까? 내 추측 : 나는 당신이 PDF 뷰어에서 처리 할 수없는 HTML을 보내고 있다고 생각한다. PDF 파일 또는 아무것도 반환하지 않아야합니다 (응답 코드 204 : 내용 없음). –

관련 문제