2011-05-12 109 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