PDF および Excel
Spring は、PDF や Excel スプレッドシートなど、HTML 以外の出力を返す方法を提供します。このセクションでは、これらの機能の使用方法について説明します。
ドキュメントビューの概要
HTML ページは、ユーザーがモデル出力を表示するのに常に最適な方法とは限りません。Spring を使用すると、モデルデータから PDF ドキュメントまたは Excel スプレッドシートを簡単に動的に生成できます。ドキュメントはビューであり、クライアント PC がレスポンスしてスプレッドシートまたは PDF ビューアーアプリケーションを実行できるようにするために、正しいコンテンツ型でサーバーからストリーミングされます。
Excel ビューを使用するには、Apache POI ライブラリをクラスパスに追加する必要があります。PDF を生成するには、(推奨) OpenPDF ライブラリを追加する必要があります。
可能であれば、基盤となるドキュメント生成ライブラリの最新バージョンを使用する必要があります。特に、OpenPDF は積極的にメンテナンスされており、信頼できない PDF コンテンツに対する重要な脆弱性を修正しているため、古いオリジナルの iText 2.1.7 ではなく OpenPDF (OpenPDF 1.2.12 など) を強くお勧めします。 |
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
インスタンスからそのようなビューを返すことができます。