backing bean을 사용하여 PDF 문서를 브라우저로 스트리밍하는 JSF 페이지가 있습니다. 이 기능은 훌륭하게 작동하며 iOS 기기에서이 기능을 테스트 할 때까지는 아무런 문제가 없었습니다.iOS 디바이스의 JSF 스트리밍 PDF
iPad 및 iPod Touch에서 Safari를 사용하면 PDF 스트림이 응답을 받으면 웹 페이지에서 스크롤 할 수없는 레이어로 붙여 넣기 만합니다. 바탕 화면의 브라우저에서 파일은 Adobe Reader로 저장하거나 열거 나 제대로 열지 묻는 메시지를 표시합니다. 이는 PDF의 첫 페이지의 일부만이 iOS 기기에 표시되고 다른 부분을 볼 방법이 없기 때문에 문제입니다.
나는 웹에서이 장치들에 대한 다른 PDF들을 테스트 해본 결과 동일하지 않습니다. PDF 응용 프로그램이 시작되거나 Safari는 원하는 결과 인 스크롤 가능한 미리보기를로드합니다. 다른 사람이 가지고 있니?
내 백업 빈은 PDF의 버퍼링 된 입력 스트림을 출력 스트림에 씁니다. 다음과 같은 응답 헤더를 설정했습니다 :
response.setContentType ("application/pdf");
response.setContentLength(inputLength);
response.setHeader ("Content-Disposition", "inline;filename=\"" + saveFilename + ".pdf\"");
response.setHeader ("Cache-Control", "must-revalidate, post-check=0, pre-check=0, public");
콘텐츠 처리를 인라인에서 첨부 파일로 전환하려고했으나 도움이되지 않았습니다.
귀하의 게시물 BalusC에 감사드립니다. 임시 위치에 파일을 저장하는 방법을 시도하고 서블릿 예제를 사용하여/pdf /에 매핑 된 서블릿을 생성하고 요청을 다시 시도했습니다. 데스크톱 브라우저에서는 예상대로 처리되었으므로 열거 나 저장하라는 메시지가 나타납니다. iOS의 Safari에서는 이전 버전과 마찬가지로 response.redirect를 사용하여 기존 웹 페이지에 PDF를 겹쳐서 표시합니다. 나는 이것이 JSF와 Safari의 버그라고 생각하기 시작했다. 그러나 확실하지는 않다. 이는 기밀 문서이므로 파일에 직접 URL을 제공 할 수는 없습니다. – dlau
흥미 롭습니다. 어쨌든 정적 샘플 PDF를 공개 웹 콘텐트에 넣었을 때 그것을 직접 참조해서'DefaultServlet'이 그 일을 수행하는 것은 어떨까요? – BalusC
예, 정상적으로 작동했습니다. iOS 기기가 열어서 Microsoft Word 문서로 간주했습니다. – dlau