我正在尝试使用iText生成pdf文件,我对这一代有疑问。我想将PDF提供给浏览器,以便浏览器显示它,而无需实际创建文件。
实现这一目标的最佳方法是什么?
一个限制是我需要在JSP页面中使用它 - 这会绕过“getOutputStream已被调用一次”错误是我正在寻找的。
答案 0 :(得分:4)
我想将PDF提供给浏览器,以便浏览器显示它,而无需实际创建文件。
只需将responsegetOutputStream()
代替new FileOutputStream
传递给PdfWriter
。
PdfWriter pdfWriter = PdfWriter.getInstance(document, response.getOutputStream());
// ...
一个限制是我需要在JSP页面中使用它 - 这将绕过“getOutputStream已被调用一次”错误是我正在寻找的。 em>
只需删除JSP中<% %>
之外的任何空格,包括换行符。它们被响应编写者隐式发送给响应。
即。不要
<% 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类中执行此操作。
答案 1 :(得分:3)
将其写入servlet输出流,记住将编码设置为正确的值
答案 2 :(得分:2)