小编典典

在JSP中将原始字节嵌入为PDF

jsp

我有一个带有应用户要求生成的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>

但这非常失败。任何帮助,将不胜感激。提前致谢。


阅读 267

收藏
2020-06-10

共1个答案

小编典典

我想向用户显示此PDF,而无需将PDF文件真正保留在服务器上。

将其写入响应的输出流。假设您正在使用iText生成PDF,并将响应的输出流传递到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,并responsedoGet()方法中完成上述工作,最后让我们<object>的URL指向该servlet。

2020-06-10