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