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 库添加到您的 Classpath 中。 对于 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.AbstractPdfView并实施buildPdfDocument()方法,如下例所示: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))
		}
	}
}

控制器可以从外部视图定义返回此类视图 (按名称引用)或作为View实例。spring-doc.cadn.net.cn

Excel 视图

从 Spring Framework 4.2 开始,org.springframework.web.servlet.view.document.AbstractXlsView作为基础提供 类。它基于 Apache POI,具有专门的子类 (AbstractXlsxViewAbstractXlsxStreamingView),取代过时的AbstractExcelView类。spring-doc.cadn.net.cn

编程模型类似于AbstractPdfViewbuildExcelDocument()作为中心模板方法,并且控制器能够从 外部定义(按名称)或作为View实例。spring-doc.cadn.net.cn