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

控制器可以從外部檢視定義(按名稱引用)或從 Handler 方法返回 View 例項來返回此類檢視。

Excel 檢視

自 Spring Framework 4.2 起,提供了 org.springframework.web.servlet.view.document.AbstractXlsView 作為 Excel 檢視的基類。它基於 Apache POI,帶有取代過時的 AbstractExcelView 類的專用子類(AbstractXlsxViewAbstractXlsxStreamingView)。

程式設計模型類似於 AbstractPdfView,其中 buildExcelDocument() 是核心模板方法,控制器可以從外部定義(按名稱)或從 Handler 方法返回 View 例項來返回此類檢視。