Spring은 PDF 및 Excel 스프레드시트를 포함하여 HTML 이외의 출력을 반환하는 방법을 제공합니다. 이 섹션에서는 이러한 기능을 사용하는 방법을 설명합니다.
HTML 페이지가 항상 사용자가 모델 출력을 보는 가장 좋은 방법은 아니며 Spring을 사용하면 모델 데이터에서 동적으로 PDF 문서나 Excel 스프레드시트를 간단하게 생성할 수 있습니다. 문서는 보기이며 올바른 콘텐츠 유형으로 서버에서 스트리밍되어 클라이언트 PC가 응답으로 스프레드시트 또는 PDF 뷰어 응용 프로그램을 실행할 수 있도록 합니다.
Excel 보기를 사용하려면 클래스 경로에 Apache POI 라이브러리를 추가해야 합니다. PDF를 생성하려면 OpenPDF 라이브러리를 추가하는 것이 좋습니다.
[Note]
가능하다면 기본 문서 생성 라이브러리의 최신 버전을 사용해야 합니다. 특히 OpenPDF는 적극적으로 유지 관리되고 신뢰할 수 없는 PDF 콘텐츠에 대한 중요한 취약점을 수정하므로 오래된 원본 iText 2.1.7 대신 OpenPDF(예: OpenPDF 1.2.12)를 강력히 권장합니다.
단어 목록에 대한 간단한 PDF 보기는 다음 예제와 같이 org.springframework.web.servlet.view.document.AbstractPdfView
를 확장하고 buildPdfDocument()
메서드를 구현할 수 있습니다.
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));
}
}
}
컨트롤러는 외부 뷰 정의(이름으로 참조)에서 또는 핸들러 메서드의 View
인스턴스로 이러한 뷰를 반환할 수 있습니다.
Spring Framework 4.2부터 org.springframework.web.servlet.view.document.AbstractXlsView
가 Excel 뷰의 기본 클래스로 제공됩니다. 이는 오래된 AbstractExcelView
클래스를 대체하는 특수 하위 클래스(AbstractXlsxView
및 AbstractXlsxStreamingView
)가 있는 Apache POI를 기반으로 합니다.
프로그래밍 모델은 AbstractPdfView
와 비슷합니다. buildExcelDocument()
가 중앙 템플릿 메서드이고 컨트롤러가 외부 정의(by name)에서 이러한 뷰를 반환하거나 핸들러 메서드에서 View
인스턴스로 반환할 수 있다는 점입니다.