对于最新稳定版本,请使用Spring Framework 7.0.1spring-doc.cadn.net.cn

PDF 和 Excel

Spring 提供了返回除 HTML 以外的输出方式,包括 PDF 和 Excel 电子表格。 本节将介绍如何使用这些功能。spring-doc.cadn.net.cn

文档视图简介

HTML页面并不总是用户查看模型输出的最佳方式, 而 Spring 则使生成 PDF 文档或 Excel 表格变得简单 动态地从模型数据中获取。文档是视图,并从中流式传输 服务器上有正确内容类型,希望能让客户端PC运行 电子表格或PDF查看器应用作为响应。spring-doc.cadn.net.cn

要使用Excel视图,你需要在类路径中添加Apache POI库。 对于PDF生成,你需要添加(最好是)OpenPDF库。spring-doc.cadn.net.cn

你应该使用最新版本的底层文档生成库, 如果可能的话。特别推荐OpenPDF(例如OpenPDF 1.2.12) 而非过时的原始 iText 2.1.7,因为 OpenPDF 正在积极维护, 修复了一个针对不可信PDF内容的重要漏洞。

PDF视图

一个简单的 PDF 视图可以扩展单词列表org.springframework.web.servlet.view.document.摘要PdfView并实现buildPdf文档()如下例所示:spring-doc.cadn.net.cn

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))
		}
	}
}

控制器可以从外部视图定义返回此类视图 (以名称提及)或作为视图实例来自处理程序方法。spring-doc.cadn.net.cn

Excel 视图

自 Spring Framework 4.2 起,org.springframework.web.servlet.view.document.AbstractXlsView作为基底提供 Excel视图的类。它基于Apache POI,并有专门的子类(摘要Xlsx视图摘要XlsxStreaming视图)取代了过时的摘要ExcelView类。spring-doc.cadn.net.cn

编程模型类似于摘要Pdf视图buildExcelDocument()作为中央模板方法,控制器能够从中返回这样的视图 外部定义(以名称命名)或作为视图实例来自处理程序方法。spring-doc.cadn.net.cn