2014-10-16 83 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文件。