|
对于最新的稳定版本,请使用 Spring Framework 7.0.6! |
PDF and 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.AbstractPdfView 并实现
buildPdfDocument() 方法,如下例所示:
-
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))
}
}
}
控制器可以从外部视图定义返回这样的视图(通过名称引用它),或者作为View实例从处理器方法返回。
Excel视图
自 Spring Framework 4.2 起,org.springframework.web.servlet.view.document.AbstractXlsView 作为 Excel 视图的基础类提供。它基于 Apache POI,具有专门的子类 (AbstractXlsxView 和 AbstractXlsxStreamingView),这些子类取代了过时的 AbstractExcelView 类。
编程模型类似于AbstractPdfView,其中buildExcelDocument()作为中心模板方法,控制器能够从外部定义(通过名称)或作为View实例从处理器方法返回视图。