【发布时间】:2012-02-13 21:17:54
【问题描述】:
我正在尝试使用 iText 生成 pdf 文件,但我对生成有疑问。我想将 PDF 提供给浏览器,以便浏览器显示它,而无需实际创建文件。
实现这一目标的最佳方法是什么?
一个限制是我需要从 JSP 页面中使用它——我正在寻找可以规避“getOutputStream 已被调用一次”错误的东西。
【问题讨论】:
我正在尝试使用 iText 生成 pdf 文件,但我对生成有疑问。我想将 PDF 提供给浏览器,以便浏览器显示它,而无需实际创建文件。
实现这一目标的最佳方法是什么?
一个限制是我需要从 JSP 页面中使用它——我正在寻找可以规避“getOutputStream 已被调用一次”错误的东西。
【问题讨论】:
我想将 PDF 提供给浏览器,以便浏览器显示它,而无需实际创建文件。
只需将responsegetOutputStream() 而非new FileOutputStream 传递给PdfWriter。
PdfWriter pdfWriter = PdfWriter.getInstance(document, response.getOutputStream());
// ...
一个限制是我需要从 JSP 页面中使用它 - 我正在寻找可以绕过“getOutputStream 已被调用一次”错误的东西。
只需删除 JSP 中 <% %> 之外的 any 空格,包括换行符。它们由响应编写器隐式发送到响应。
即不要
<% 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 之类的模板文本,而不是做完全不同的事情。在像 servlet 这样的普通 Java 类中执行此操作。
【讨论】:
将其写入servlet输出流,记得将编码设置为正确的值
【讨论】:
【讨论】: