2013-04-02 1 views
1

코드 :은 임시 파일에 저장하지 않고이 iText를 이용하여 PDF 만들기

private String FILE = "e:/FirstPdf.pdf"; 

public void preparePDF() { 
     try { 
      Document document = new Document(); 
      PdfWriter.getInstance(document, pdfFile); 
      document.open(); 
      addTitlePage(document); 
      document.close(); 
     } catch (Exception e) { 
      e.printStackTrace(); 
     } 
} 

모든 것이 잘 작동하지만 내가 원하는 것은 임시 폴더에 PDF를 저장하지 않는 것입니다 아니라 단지 private File하거나 삽입 어떤 것. PDF 파일을 다운로드 할 수있는 기능이있는 웹 응용 프로그램을 만들고 있는데, pdf가 변수 안에 있어야합니다.

+0

PDF는 변수 안에 저장할 수 없으며 특정 위치에 저장합니다. 변수에 전체 경로를 저장하고 해당 경로를 다운로드하여 파일 다운로드 기능에 전달하여 다운로드 할 수 있습니다. – commit

답변

1

PdfWriter은 정적 방법 getInstance(Document document, OutputStream os)입니다. ByteArrayOutputStream을 사용하여 내용을 바이트 배열에 저장하십시오. 나중에이 배열을 사용하여 파일을 사용자에게 보냅니다. 배열을 ByteArrayInputStream으로 랩핑해야 할 수도 있습니다.

이렇게하면 파일을 파일 시스템에 저장할 필요가 없습니다.

+0

정확히 내가 무엇을 찾고 있었는지! 고맙습니다! – galao

0

document을 파일 대신 OutputStream에 쓸 수 있습니다. PDF 파일을 동적으로 생성하고 다운로드하려면 (즉, 생성하지 않으면 1 초 이상 걸릴 수 있습니다) 서블릿을 만들고 HttpServletResponse.getOutputStream()에 쓸 수 있습니다. 당신이 PDF을 저장할 해달라고하면

PdfWriter.getInstance(document, response.getOutputStream()) 
2

당신은 ByteArrayOutputStream를 사용할 수 있습니다. 이것 좀 봐 example

관련 문제