打开PDF文件下载没有存储在驱动器
答
这个问题已经回答了前一天在这里:How to convert pdfstamper to byte array
我没有标记为重复你的问题,因为你的问题,这个问题似乎一见钟情不同,但回答这两个问题是相同的:
例如,参见FormServlet例子,它说:
// We create an OutputStream for the new PDF
ByteArrayOutputStream baos = new ByteArrayOutputStream();
// Now we create the PDF
PdfStamper stamper = new PdfStamper(reader, baos);
然后在后面的例子中,我们这样做:
// We write the PDF bytes to the OutputStream
OutputStream os = response.getOutputStream();
baos.writeTo(os);
正如你可以看到:我们不存储使用FileOutputStream
(没有文件被存储在服务器上)的PDF,但我们使用ByteArrayOutputStream
文件存储在内存中。然后我们将这些字节写入响应对象的OutputStream
。
这个例子是从一本书中还包含一个JSP示例获取的:http://itextpdf.com:8180/book/helloworld.jsp
然而,书中列举的原因有相当数量为什么它是一个糟糕的主意,用JSP创建PDF。作为一名JSP开发人员,您知道JSP永远不应该用于以二进制格式创建文件。 PDF是二进制文件,因此:您应该编写一个Servlet来创建PDF,而不是JSP文件。
这在服务器端是微不足道的,但是我们在谈论什么类型的客户端? Web浏览器及其插入的PDF查看器?你几乎不能阻止他们在某处存储临时副本。 – mkl 2014-10-16 12:31:33
服务器端,您可以在流中创建PDF文件(即,不会将PDF文件存储在服务器的文件系统中)。但是,除非您设置了某个DRM系统,否则该文件必须下载到客户端才能被查看(即使它被下载到临时文件夹中,它仍会位于客户端的文件系统中)。 – 2014-10-16 12:31:33
需要打开pdf文件浏览器或acrobat阅读器。不保存在服务器中或使用预定义的文件路径。 – Skyfall 2014-10-16 12:47:23