2014-10-16 82 views
-1

我的要求是强制系统打开PDF文件,而无需存储在服务器或客户端系统。我正在使用java,jsf,iText。但到目前为止我还没有成功。任何帮助?打开PDF文件下载没有存储在驱动器

+2

这在服务器端是微不足道的,但是我们在谈论什么类型的客户端? Web浏览器及其插入的PDF查看器?你几乎不能阻止他们在某处存储临时副本。 – mkl 2014-10-16 12:31:33

+0

服务器端,您可以在流中创建PDF文件(即,不会将PDF文件存储在服务器的文件系统中)。但是,除非您设置了某个DRM系统,否则该文件必须下载到客户端才能被查看(即使它被下载到临时文件夹中,它仍会位于客户端的文件系统中)。 – 2014-10-16 12:31:33

+0

需要打开pdf文件浏览器或acrobat阅读器。不保存在服务器中或使用预定义的文件路径。 – Skyfall 2014-10-16 12:47:23

回答

0

这个问题已经回答了前一天在这里: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文件。