我有一个带有应用户要求生成的PDF原始字节的bean。我想向用户显示此PDF,而无需将PDF文件真正保留在服务器上。
在我的jsp中,我尝试过像
<object data="#{bean.pdfBytes}" type="application/pdf" ></object> <object type="application/pdf" width="600" height="400"> <h:outputFormat value="#{bean.pdfBytes}" escape="false"/> </object>
但这非常失败。任何帮助,将不胜感激。提前致谢。
我想向用户显示此PDF,而无需将PDF文件真正保留在服务器上。
将其写入响应的输出流。假设您正在使用iText生成PDF,并将响应的输出流传递到PdfWrter#getInstance()。
PdfWrter#getInstance()
public void download() throws IOException { FacesContext context = FacesContext.getCurrentInstance(); HttpServletResponse response = (HttpServletResponse) context.getExternalContext().getResponse(); response.setContentType("application/pdf"); response.setHeader("Content-Disposition", "inline; filename=\"" + filename + "\""); Document document = new Document(); PdfWriter writer = PdfWriter.getInstance(document, response.getOutputStream()); document.open(); // Build document. context.responseComplete(); }
但是,这将在浏览器中完整显示PDF。如果要“_另存为”_对话框,只需inline将标题中的部分更改为attachment。或者,如果您真的想将其嵌入<object>,则需要创建一个servlet,并response在doGet()方法中完成上述工作,最后让我们<object>的URL指向该servlet。
inline
attachment
<object>
response
doGet()