我想爲PDF文件生成使用iText,並且我有一個關於這一代的問題。我想將PDF提供給瀏覽器,以便瀏覽器顯示它,而無需真正創建文件。iText - 在不需要PDF文件的情況下即時生成文件
什麼是最好的方法來實現這一目標?
一個限制是我需要從JSP頁面使用它 - 這會繞過「getOutputStream已被調用過一次」的錯誤,這是我正在尋找的錯誤。
我想爲PDF文件生成使用iText,並且我有一個關於這一代的問題。我想將PDF提供給瀏覽器,以便瀏覽器顯示它,而無需真正創建文件。iText - 在不需要PDF文件的情況下即時生成文件
什麼是最好的方法來實現這一目標?
一個限制是我需要從JSP頁面使用它 - 這會繞過「getOutputStream已被調用過一次」的錯誤,這是我正在尋找的錯誤。
我想的PDF服務至瀏覽器,瀏覽器顯示它,而不實際創建文件。
只是通過responsegetOutputStream()
而不是new FileOutputStream
到PdfWriter
。
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那樣做。
它寫入servlet輸出流,記住編碼設置爲正確的值
這裏是我試圖運行的代碼: ===================== 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
我有一些代碼,這樣做,但我不會得到後t直到早上 - 生病做到這一點,然後 – TrueDub 2012-02-13 23:09:32
還沒有忘記這一點 - 我仍然試圖找到相關的代碼 – TrueDub 2012-02-15 08:22:00
BalusC - 非常感謝你的努力來回答我的問題。對此,我真的非常感激。 – oneiros 2012-02-15 16:03:36