Spring ofrece formas de devolver resultados distintos de HTML, incluidas hojas de cálculo PDF y Excel.

Introducción a las vistas de documentos

Una página HTML no siempre es la mejor manera para que un usuario vea los resultados de la simulación, y Spring facilita la generación dinámica de un documento PDF o una hoja de cálculo de Excel basada en datos del modelo. El documento es una representación y se envía desde el servidor con el tipo de contenido apropiado para (con suerte) permitir que la PC cliente inicie su hoja de cálculo o aplicación de visualización de PDF en respuesta.

Para utilizar vistas de Excel, necesita agregar la biblioteca de puntos de interés de Apache a su classpath. Para generar PDF necesitas agregar (preferiblemente) la biblioteca OpenPDF.

Siempre que sea posible, debe utilizar las últimas versiones de las bibliotecas principales de generación de documentos. En particular, recomendamos encarecidamente OpenPDF (por ejemplo, OpenPDF 1.2.12) en lugar del iText 2.1.7 original y obsoleto, ya que OpenPDF se mantiene activamente y parchea una vulnerabilidad importante para contenido PDF que no es de confianza.

Vistas de PDF

Una vista PDF simple para una lista de palabras puede ampliar org.springframework.web.servlet.view.document.AbstractPdfView e implementar el método buildPdfDocument(), como se muestra en el siguiente ejemplo:

Java
clase pública PdfWordList extiende AbstractPdfView {
    protected void buildPdfDocument (modelo de mapa<cadena, objeto>, documento de documento, escritor de PdfWriter,
            Solicitud HttpServletRequest, respuesta HttpServletResponse) arroja una excepción {
        Lista<String> palabras = (Lista<String>) model.get("lista de palabras");
        for (palabra de cadena: palabras) {
            doc.add(nuevo párrafo(palabra));
        }
    }
}
Kotlin
clase PdfWordList: AbstractPdfView() {
    anular divertido buildPdfDocument(modelo: Map<String, Any>, doc: Document, escritor: PdfWriter,
            solicitud: HttpServletRequest, respuesta: HttpServletResponse) {
        val palabras = modelo["listadepalabras"] as Lista<String>
        para (palabra en palabras) {
            doc.add(Párrafo(palabra))
        }
    }
}

El controlador puede devolver dicha vista desde una definición de vista externa (refiriéndose a ella por su nombre) o como una instancia View desde un método de controlador.

Vistas de Excel

A partir de Spring Framework 4.2, org.springframework.web.servlet.view.document.AbstractXlsView se proporciona como clase base para las vistas de Excel. Se basa en Apache POI con subclases especializadas (AbstractXlsxView y AbstractXlsxStreamingView) que reemplazan la clase heredada AbstractExcelView.

El modelo de programación es similar a AbstractPdfView, con buildExcelDocument() como método de plantilla central y controladores capaces de devolver dicha vista desde una definición externa (por nombre). o como una instancia de View del método controlador.