2011-04-21 10 views
1

PDF 파일을 JSF 페이지에 표시하고 싶습니다.이 파일은 how to display a pdf document in jsf page in iFrame으로 확인했으나 스크롤 막대가 생성되므로 iframe에 표시하고 싶지 않습니다. 난 그냥 이미지와 같은 페이지에 폭과 높이를 줄 수있는 PDF 파일을 표시하고 싶습니다.JSF 페이지에 PDF를 표시하는 방법

EDIT Hi BalusC. 나는 여전히 PDF 인라인을 표시 할 수 없습니다. 여기 내 코드가있다.

@WebServlet(name = "pdfHandler", urlPatterns = {"/pdfHandler/*"}) 
public class pdfHandler extends HttpServlet { 

    private static final int DEFAULT_BUFFER_SIZE = 10240; 

    protected void processRequest(HttpServletRequest request, HttpServletResponse response) 
      throws ServletException, IOException { 

     String requestedFile = request.getPathInfo(); 
     File file = new File("/Users/KingdomHeart/Downloads/Test/pdf/" + requestedFile); 
     response.reset(); 
     response.setContentType("application/pdf"); 
     response.setBufferSize(DEFAULT_BUFFER_SIZE); 
     response.setHeader("Content-Length", String.valueOf(file.length())); 
     response.setHeader("Content-Disposition", "inline; filename=\"" + file.getName() + "\""); 
     BufferedInputStream input = null; 
     BufferedOutputStream output = null; 
     try{ 
      input = new BufferedInputStream(new FileInputStream(file), DEFAULT_BUFFER_SIZE); 
      output = new BufferedOutputStream(response.getOutputStream(), DEFAULT_BUFFER_SIZE); 
      byte[] buffer = new byte[DEFAULT_BUFFER_SIZE]; 
      int length; 
      while((length = input.read(buffer)) > 0){ 
       output.write(buffer, 0, length); 
      } 
     }finally{ 
      output.close(); 
      input.close(); 
     } 
    } 
    ... 
} 

그것은 여전히 ​​PDF 파일을 다운로드 나하라는 메시지를 표시합니다. 내 컴퓨터에 다운로드되는 pdf 파일은 올바른 pdf 파일 btw입니다. 너 뭐 잘못 생각할 수 있니?

+0

먼저 ** 브라우저에 ** Adobe Reader 플러그인 **이 설치되어 있는지 확인하십시오. ** 브라우저 **에서 PDF 문서 **를 볼 수 있습니까, 아니면 여전히 다운로드를 요청합니까? –

답변

4

정말 다른 방법이 아니다 (같은 "문제"를했을 HTML <object> 태그 기대), 그러나 다음과 같이 그냥 스크롤을 <iframe>에게 고정 된 크기를 제공하고 해제 할 수 있습니다

<iframe src="foo.pdf" width="600" height="400" scrolling="no"></iframe> 

하는 경우 frameBorder="0"도 추가하십시오 (기본 경계선을 숨기고 싶을 때).

+0

iframe에 표시 할 때 pdf가 표시되지 않고 pdf 파일을 다운로드하라는 메시지가 즉시 표시됩니다. pdf -> image로 변환하는 것이 이것에 대한 유일한 해결책입니까? –

+3

'Content-Disposition' 응답 헤더는'attachment' 대신'inline' (기본값)으로 설정되어야합니다. 또한 코드 라인에서 링크 된 답변을 참조하십시오. – BalusC

+1

업데이트에 따라 : 검색된 PDF가 항상 저장되도록 설정된 브라우저 설정입니다. Firefox를 사용합니까? * 도구> 옵션> 응용 프로그램 *. 기본적으로 그렇게하지 않는다는 것을 유의하십시오. 이전에 PDF 파일을 가져올 때 * 기억 * 옵션을 선택 했어야합니다. – BalusC

1

Adobe Reader로 가서 [옵션] 대화 상자 아래에 브라우저에서 PDF 형식의 문서를 항상 열도록 지정할 수있는 웹 설정이 있습니다.

이것은 불행히도 클라이언트 쪽 수정이며 다른 PDF 리더를 고려하지 않았습니다.

1

원하는 것은 불가능합니다. 브라우저는 마술이 아니며 다양한 종류의 문서를 표시합니다. HTML 중 일부는 플러그인 (플래시, 자바)과 iframe (pdf, flash, html) 내부의 다른 문서를 포함 할 수 있습니다. pdf 축소판을 표시하려면 서버에 이미지를 생성해야합니다.

+0

감사합니다. PDF를 이미지로 변환하는 Java Open Source API에 대한 권장 사항은 무엇입니까? –

+0

http://java.net/projects/pdf-renderer/ (SwingLabs 출신)의 PDF 렌더러 라이브러리가 제대로 작동하는 데 사용되었지만 (엄지 손가락을 만들기 위해 사용한 적이 없지만 작동해야 함). – fdreger

+0

실행 파일 인 jar 파일은 어디에서 다운로드합니까? 내가 보는 모든 것은 소스 코드입니다. –

2

ICEpdf을보고 서버 측에 이미지를 만들고 확대/축소 및 기타 컨트롤 (demo)을 제공해야합니다.

+0

전에이 라이브러리를 사용하고 있습니까? –

+0

서블릿 부분에는 이미지 변환 만 있지만 릴리스를 다운로드하면 JSF (ICEfaces) webapp 예제가 있습니다. – Adam

관련 문제