PDF 和 Excel

Spring 提供了除 HTML 之外的輸出方式,包括 PDF 和 Excel 電子表格。本節介紹如何使用這些功能。

自 Spring Framework 7.0 起,`org.springframework.web.servlet.view.document` 包中的檢視類已被棄用。取而代之的是,庫可以調整此現有程式碼以透過其自身的 `*View` 型別提供支援。作為替代方案,應用程式可以在 Web 處理器中執行直接渲染。

文件檢視簡介

HTML 頁面並非總是使用者檢視模型輸出的最佳方式,Spring 使從模型資料動態生成 PDF 文件或 Excel 電子表格變得簡單。文件是檢視,並以正確的 Content-Type 從伺服器流式傳輸,以(希望)使客戶端 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` 例項返回此類檢視。

© . This site is unofficial and not affiliated with VMware.