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
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));
        }
    }
}
Kotlin
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))
        }
    }
}

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.