|
对于最新稳定版本,请使用Spring Framework 7.0.1! |
PDF 和 Excel
Spring 提供了返回除 HTML 以外的输出方式,包括 PDF 和 Excel 电子表格。 本节将介绍如何使用这些功能。
文档视图简介
HTML页面并不总是用户查看模型输出的最佳方式, 而 Spring 则使生成 PDF 文档或 Excel 表格变得简单 动态地从模型数据中获取。文档是视图,并从中流式传输 服务器上有正确内容类型,希望能让客户端PC运行 电子表格或PDF查看器应用作为响应。
要使用Excel视图,你需要在类路径中添加Apache POI库。 对于PDF生成,你需要添加(最好是)OpenPDF库。
| 你应该使用最新版本的底层文档生成库, 如果可能的话。特别推荐OpenPDF(例如OpenPDF 1.2.12) 而非过时的原始 iText 2.1.7,因为 OpenPDF 正在积极维护, 修复了一个针对不可信PDF内容的重要漏洞。 |
PDF视图
一个简单的 PDF 视图可以扩展单词列表org.springframework.web.servlet.view.document.摘要PdfView并实现buildPdf文档()如下例所示:
-
Java
-
Kotlin
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));
}
}
}
class PdfWordList : AbstractPdfView() {
override fun buildPdfDocument(model: Map<String, Any>, doc: Document, writer: PdfWriter,
request: HttpServletRequest, response: HttpServletResponse) {
val words = model["wordList"] as List<String>
for (word in words) {
doc.add(Paragraph(word))
}
}
}
控制器可以从外部视图定义返回此类视图
(以名称提及)或作为视图实例来自处理程序方法。
Excel 视图
自 Spring Framework 4.2 起,org.springframework.web.servlet.view.document.AbstractXlsView作为基底提供
Excel视图的类。它基于Apache POI,并有专门的子类(摘要Xlsx视图和摘要XlsxStreaming视图)取代了过时的摘要ExcelView类。
编程模型类似于摘要Pdf视图跟buildExcelDocument()作为中央模板方法,控制器能够从中返回这样的视图
外部定义(以名称命名)或作为视图实例来自处理程序方法。