跳到主要内容
版本:7.0.3

PDF和Excel

Hunyuan 7b 中英对照 PDF and Excel

Spring提供了除了HTML之外的其他输出方式,包括PDF和Excel电子表格。本节将介绍如何使用这些功能。

注意

从Spring Framework 7.0开始,org.springframework.web.servlet.view.document包中的视图类已被弃用。相反,库可以适配现有的代码,用自己的*View类型来提供支持。作为一种替代方案,应用程序可以在Web处理程序中直接进行渲染。

文档视图介绍

HTML页面并不总是用户查看模型输出的最佳方式,而Spring可以简化从模型数据动态生成PDF文档或Excel电子表格的过程。生成的文档即为用户所看到的“视图”,并通过服务器以正确的内容类型进行流式传输,以便(希望如此)让客户端电脑能够运行相应的电子表格或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()方法,如下例所示:

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实例返回。

Excel视图

自Spring Framework 4.2以来,org.springframework.web.servlet.view.document.AbstractXlsView被作为Excel视图的基础类提供。它基于Apache POI,有一些专门的子类(AbstractXlsxViewAbstractXlsxStreamingView),这些子类取代了过时的AbstractExcelView类。

该编程模型与AbstractPdfView类似,其中buildExcelDocument()是核心的模板方法,控制器可以从外部定义中(通过名称)返回这样的视图,或者从处理方法中返回一个View实例作为视图。