我发送一个另存为对话框时,我发送由iText生成的PDF文件在servlet中。我怎样才能做到这一点?如何为iText生成的PDF显示另存为对话框?
回答
好的,我解决了我的问题!我在本页发现: 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
它是如此简单......
所以你根本没有这样做?!请注意,这不一定会显示*另存为*对话框。浏览器可以默认显示它内联,而不会询问保存的位置。我明白这发生在你身上,而你想弹出一个*另存为*。 – BalusC 2011-05-12 13:35:05
您需要让servlet将Content-Disposition
标头设置为attachment
。
response.setHeader("Content-Disposition", "attachment; filename=\"" + filename + "\"");
这将迫使另存为对话,其中终端用户可以选择的位置。
请记住,最终用户可能已经改变了其浏览器设置采取PDF文件的默认动作,例如总是显示它在阅读器或总是将它保存在某个固定位置。例如在Firefox中,您可以通过控制此工具>选项>应用程序。不,你不能从服务器端改变这个浏览器特定的行为。
谢谢,但是当我必须发送标题,我怎么能得到一个java var中选定的路径? – FAjir 2011-05-12 13:03:51
在将任何位写入响应主体之前,您必须发送它。所以在你调用'getOutputStream()'之前。由于安全限制,您无法将所选路径返回到服务器端。无论如何,这些信息是毫无用处的。如果你真的需要得到它,唯一可以做到的是一个由你的网页提供的签名(!)Java applet。在那里你可以自由地按你想要的方式编写Swing代码。 – BalusC 2011-05-12 13:07:32
oulala没有时间去开发一个GUI,我无法想象有没有简单的方法让用户选择PDF下载的地方。最初,我在我的用户主目录上创建pdf(因为它在当前的localhost上工作),我只是想以用导航器试图打开文件或要求保存的方式将用户重定向到文件!肯定有一种方法。 – FAjir 2011-05-12 13:15:45
- 1. 加速显示iText /飞碟生成的PDF打印对话框
- 2. 如何为通过C#生成的Excel文件显示“另存为”对话框
- 3. 通过显示另存为对话框
- 4. 如何在Electron App中显示另存为对话框?
- 5. 如何在WPF中显示另存为对话框?
- 6. 如何解决重复对话框另存为pdf?
- 7. 提示文件另存为对话框
- 8. ASP.NET显示PDF文件的用户,而不是“另存为”对话框
- 9. 使用Watin显示IE“另存为”对话框
- 10. 在Firefox中显示另存为对话框
- 11. 下载另存为对话框的PDF文档
- 12. 如何在文件下载时提示“另存为”对话框
- 13. 使用itext打开pdf生成的对话问题
- 14. 另存为JSP中的对话框
- 15. 的Javascript另存为对话框
- 16. 如何使用PHP显示“另存为”对话框文本文件
- 17. 如何通过jQuery或Javascript在IE9和11中显示“另存为”对话框
- 18. iText生成的PDF在Chrome中未正确显示
- 19. iText PDF动态生成
- 20. 从Itext生成inputStream pdf源
- 21. 另存为对话框不弹出
- 22. ExtJS AJAX另存为对话框
- 23. Excel API另存为对话框问题
- 24. 打开另存为对话框
- 25. Php图像另存为对话框
- 26. JSF 1.1另存为对话框问题
- 27. 关闭主对话框并显示另一个为主对话框,MFC
- 28. 另存为对话框IEXPLORER如何保存htm文件
- 29. 如何显示对话框
- 30. Itext pageNumber在PDF中显示
请编辑您的标题,它不是一个EE话题 – kostja 2011-05-12 12:47:33
的'JFileChooser'是一个Swing类,因此它完全误导。我已经清除了这个问题。 – BalusC 2011-05-12 12:55:20