如何创建和显示JSp模板为PDF

时间:2018-06-12 09:17:56

标签: java spring-mvc jsp spring-boot servlets

我有一个要求,我必须生成PDF。那个PDf我们可以在完整的浏览器中显示,或者我们可以在iframe中作为预览显示它。我想使用带有一些动态数据的HTML和JSP创建一个JSP模板。每当我点击生成pfd,我希望这个模板作为pdf进入iFrame。我该怎么做以及如何将动态jsp转换为pdf?

1 个答案:

答案 0 :(得分:0)

您可以做的第一件事就是使用org.apache.pdfbox

有关详细信息和许多示例https://pdfbox.apache.org/

,请参阅参考资料

当用户单击生成按钮时,您将需要逐步创建pdf,使其看起来像模板。您无法将包含数据的jsp模板的一部分“复制”到pdf中。

您可以将输出创建为文件或字节数组:

protected void create(Object model, HttpServletRequest request, HttpServletResponse response) throws Exception {

    ByteArrayOutputStream baos = createTemporaryOutputStream();

    PDDocument document = newDocument();

    // Build PDF document.
    buildPdfDocument(model, document, request, response);
    document.save(baos);
    document.close();


    final String filename = "pdf-as-byte-stream.pdf";

    response.setContentType("application/pdf");
    response.setHeader("Content-Disposition", "attachment; filename=\"" + filename + "\"");

    writeToResponse(response, baos);
}

通过上述解决方案,pdf将在浏览器全屏显示。 但是因为你想将它显示为iframe,你需要将字节流保存到文件中,然后将iframe指向该文件。

<iframe src="https://www.yoursite.com/pdf/dgxedg37gd3wedb3d83vd3dgv3dt3.pdf"></iframe>

(确保为pdf生成唯一的名称)