2013-04-02 77 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文件功能的Web應用程序,我只需要把PDF放在一個變量中。

+0

PDF不能存儲在一個變量,保存到特定位置存儲它的完整路徑到一個變量,並通過該路徑下載文件功能下載。 – commit

回答

1

PdfWriter有一個靜態方法getInstance(Document document, OutputStream os)。使用ByteArrayOutputStream將內容存儲到字節數組中。稍後,使用此陣列將文件發送給用戶。也許你需要將數組包裝成一個ByteArrayInputStream

這樣,您不需要將文件存儲在文件系統上。

+0

正是我在找的!謝謝! – galao

0

您可以將document寫入OutputStream而不是文件。如果您希望能夠動態生成和下載PDF文件(即,如果它不需要花費大約一秒鐘的時間來生成),那麼您可以創建一個servlet並寫入HttpServletResponse.getOutputStream()

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

您可以使用ByteArrayOutputStream,如果你不想保存PDF。看看這 example

相關問題