2012-02-13 91 views
0

我想爲PDF文件生成使用iText,並且我有一個關於這一代的問題。我想將PDF提供給瀏覽器,以便瀏覽器顯示它,而無需真正創建文件。iText - 在不需要PDF文件的情況下即時生成文件

什麼是最好的方法來實現這一目標?

一個限制是我需要從JSP頁面使用它 - 這會繞過「getOutputStream已被調用過一次」的錯誤,這是我正在尋找的錯誤。

回答

3

我想的PDF服務至瀏覽器,瀏覽器顯示它,而不實際創建文件。

只是通過responsegetOutputStream()而不是new FileOutputStreamPdfWriter

PdfWriter pdfWriter = PdfWriter.getInstance(document, response.getOutputStream()); 
// ... 

一個限制是,我需要從一個JSP頁面中使用它 - 這將規避「的getOutputStream已經被稱爲一次」錯誤是我所期待的。

只是刪除任何空白外<% %>在JSP中,包括換行。它們被迴應作者隱式發送給回覆。

I.e.不

<% page import="foo" %> 
<% page import="bar" %> 

<% 
    for (int i = 0; i < 1000; i++) { 
     out.println("I should not use scriptlets."); 
    } 
%> 

(newline here) 

但更

<% page import="foo" %><% page import="bar" %><% 
    for (int i = 0; i < 1000; i++) { 
     out.println("I should use servlets."); 
    } 
%> 

或者更好的,不要把Java代碼在JSP文件。 JSP文件旨在呈現像HTML這樣的模板文本,而不是做完全不同的事情。在一個普通的Java類中像servlet那樣做。

+0

BalusC - 非常感謝你的努力來回答我的問題。對此,我真的非常感激。 – oneiros 2012-02-15 16:03:36

2

它寫入servlet輸出流,記住編碼設置爲正確的值

+0

這裏是我試圖運行的代碼: ===================== Document document = new Document(); //第2步 PdfWriter.getInstance(document,response.getOutputStream()); //第3步 document.open(); // step 4 document.add(new Paragraph(「Hello World」)); =============================================== =============== itext getOutputStream()已被調用此響應 – oneiros 2012-02-13 21:21:47

+1

我有一些代碼,這樣做,但我不會得到後t直到早上 - 生病做到這一點,然後 – TrueDub 2012-02-13 23:09:32

+1

還沒有忘記這一點 - 我仍然試圖找到相關的代碼 – TrueDub 2012-02-15 08:22:00