2011-05-12 54 views
0

我發送一個另存爲對話框時,我發送由iText生成的PDF文件在servlet中。我怎樣才能做到這一點?如何爲iText生成的PDF顯示另存爲對話框?

+2

請編輯您的標題,它不是一個EE話題 – kostja 2011-05-12 12:47:33

+1

的'JFileChooser'是一個Swing類,因此它完全誤導。我已經清除了這個問題。 – BalusC 2011-05-12 12:55:20

回答

0

好的,我解決了我的問題!我在本頁發現: http://www.geek-tutorials.com/java/itext/servlet_jsp_output_pdf.php

該方法直接使用getOutputStream()(不在文件路徑中)編寫併發送內容類型頭文件!

response.setContentType("application/pdf"); 
Document document = new Document(); 
try{ 
    PdfWriter.getInstance(document, 
    response.getOutputStream()); 
    //pdf generate code 

它是如此簡單......

+2

所以你根本沒有這樣做?!請注意,這不一定會顯示*另存爲*對話框。瀏覽器可以默認顯示它內聯,而不會詢問保存的位置。我明白這發生在你身上,而你想彈出一個*另存爲*。 – BalusC 2011-05-12 13:35:05

7

您需要讓servlet將Content-Disposition標頭設置爲attachment

response.setHeader("Content-Disposition", "attachment; filename=\"" + filename + "\""); 

這將迫使另存爲對話,其中終端用戶可以選擇的位置。

請記住,最終用戶可能已經改變了其瀏覽器設置採取PDF文件的默認動作,例如總是顯示它在閱讀器或總是將它保存在某個固定位置。例如在Firefox中,您可以通過控制此工具>選項>應用程序。不,你不能從服務器端改變這個瀏覽器特定的行爲。

+0

謝謝,但是當我必須發送標題,我怎麼能得到一個java var中選定的路徑? – FAjir 2011-05-12 13:03:51

+0

在將任何位寫入響應主體之前,您必須發送它。所以在你調用'getOutputStream()'之前。由於安全限制,您無法將所選路徑返回到服務器端。無論如何,這些信息是毫無用處的。如果你真的需要得到它,唯一可以做到的是一個由你的網頁提供的簽名(!)Java applet。在那裏你可以自由地按你想要的方式編寫Swing代碼。 – BalusC 2011-05-12 13:07:32

+0

oulala沒有時間去開發一個GUI,我無法想象有沒有簡單的方法讓用戶選擇PDF下載的地方。最初,我在我的用戶主目錄上創建pdf(因爲它在當前的localhost上工作),我只是想以用導航器試圖打開文件或要求保存的方式將用戶重定向到文件!肯定有一種方法。 – FAjir 2011-05-12 13:15:45

相關問題