PDF 与 Excel
Infra 提供了除 HTML 以外的输出方式,包括 PDF 和 Excel 电子表格。 本节介绍如何使用这些功能。
文档视图简介
HTML 页面并不总是用户查看模型输出的最佳方式,Infra 使得基于模型数据动态生成 PDF 文档或 Excel 电子表格变得简单。文档即视图,会以正确的内容类型从服务器流式返回,从而(希望) 让客户端 PC 使用其电子表格或 PDF 查看器应用进行响应。
要使用 Excel 视图,需要将 Apache POI 库加入类路径。 生成 PDF 时,需要加入(最好使用)OpenPDF 库。
| 你应尽量使用文档生成库的最新版本。特别是,我们强烈建议使用 OpenPDF(例如 OpenPDF 1.2.12) 而不是过时的 iText 2.1.7,因为 OpenPDF 仍在积极维护,并修复了处理不可信 PDF 内容的重要漏洞。 |
PDF 视图
一个用于单词列表的简单 PDF 视图可以继承
infra.web.view.document.AbstractPdfView 并实现
buildPdfDocument() 方法,如下例所示:
-
Java
public class PdfWordList extends AbstractPdfView {
protected void buildPdfDocument(Map<String, Object> model, Document doc, PdfWriter writer,
HttpServletRequest request, HttpServletResponse response) throws Exception {
List<String> words = (List<String>) model.get("wordList");
for (String word : words) {
doc.add(new Paragraph(word));
}
}
}
控制器可以通过外部视图定义(按名称引用)或在处理方法中直接返回 View 实例来返回该视图。