iText - 无需 PDF 文件即可即时生成文件

IT小君   2021-11-15T14:05:24

我正在尝试使用 iText 生成 pdf 文件,我有一个关于生成的问题。我想将 PDF 提供给浏览器,以便浏览器显示它,而无需实际创建文件。

实现这一目标的最佳方法是什么?

一个限制是我需要从 JSP 页面使用它 - 我正在寻找可以规避“getOutputStream 已经被调用一次”错误的东西。

点击广告,支持我们为你提供更好的服务
评论(3)
IT小君

我想将 PDF 提供给浏览器,以便浏览器显示它,而无需实际创建文件。

只需传递responsegetOutputStream()而不是new FileOutputStreamto PdfWriter

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

一个限制是我需要从 JSP 页面使用它 - 我正在寻找可以规避“getOutputStream 已经被调用一次”错误的东西。

只需删除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 类中执行此操作。

2021-11-15T14:05:25   回复
IT小君

将其写入servlet输出流,记住将编码设置为正确的值

2021-11-15T14:05:25   回复
IT小君
2021-11-15T14:05:25   回复