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` 例項返回此類檢視。