生成pdf,并使用HttpServletResponse(标题)将其发送给用户

时间:2011-12-13 15:59:51

标签: java struts2 pdf-generation httpresponse

欢迎所有人。
我正在尝试创建一个PDF发送给用户,而不是先将文件保存在我的服务器上 我正在使用Hibernate + struts2。 我的样本代码: CreatePDF.java(生成pdf的类) 方法BuildPdf():

ByteArrayOutputStream baos = new ByteArrayOutputStream();
try {
    document = new Document();
    PdfWriter.getInstance(document,baos);
    document.open();
    buildPage(document, snippet, snippetContent);
    document.close();
    response.setContentType("application/pdf");
    response.setContentLength(baos.size());
    response.setHeader("Content-Disposition", "attachment;filename=document.pdf");
    ServletOutputStream out = response.getOutputStream();
    baos.writeTo(out);
    out.flush();
    response.flushBuffer();
} catch (Exception e) {
    Log4jUtil.debug(logger, "Can not buid pdf-file", e);
}

我的示例动作: 方法索引():

pdf = new CreatePDF();
pdf.buildPdf(snippet, snippetContent);
return SUCCESS;

请检查我的代码是否有搜索错误?可能有错误.... 请帮我。需要想法或示例代码来解决我的任务。

2 个答案:

答案 0 :(得分:1)

首先,Hibernate在这里完全无关紧要。 Struts2是相关的,但您没有使用它,您使用的是普通(低级)servlet API。这应该可行,但如果您的webapp是围绕Struts2构建的,那么这不是推荐的方式。您应该使用Stream result

答案 1 :(得分:0)

要创建PDF文档,您可以使用Smart PDF Creator。它只需点击几下即可创建专业的PDF。您可以在此处免费试用:http://www.smartpdfcreator.com