PDF および Excel

Spring は、PDF や Excel スプレッドシートなど、HTML 以外の出力を返す方法を提供します。このセクションでは、これらの機能の使用方法について説明します。

ドキュメントビューの概要

HTML ページは、ユーザーがモデル出力を表示するのに常に最適な方法とは限りません。Spring を使用すると、モデルデータから PDF ドキュメントまたは Excel スプレッドシートを簡単に動的に生成できます。ドキュメントはビューであり、クライアント PC がレスポンスしてスプレッドシートまたは PDF ビューアーアプリケーションを実行できるようにするために、正しいコンテンツ型でサーバーからストリーミングされます。

Excel ビューを使用するには、Apache POI ライブラリをクラスパスに追加する必要があります。PDF を生成するには、(推奨) OpenPDF ライブラリを追加する必要があります。

可能であれば、基礎となるドキュメント生成ライブラリの最新バージョンを使用する必要があります。特に、古い PDF の iText 2.1.7 ではなく OpenPDF(OpenPDF 1.2.12 など)を強くお勧めします。これは、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 に基づいており、古い AbstractExcelView クラスに代わる特殊なサブクラス (AbstractXlsxView および AbstractXlsxStreamingView) があります。

プログラミングモデルは AbstractPdfView に似ており、buildExcelDocument() は中心的なテンプレートメソッドであり、コントローラーは外部定義(名前による)またはハンドラーメソッドから View インスタンスからそのようなビューを返すことができます。