Spring MVC et fichier PDF via AbstractPdfView

Fichier Spring MVC et PDF via AbstractPdfView

Spring MVC est livré avec la classeAbstractPdfView pour exporter des données vers un fichier pdf via la bibliothèqueiText de Bruno Lowagie. Dans ce didacticiel, il montre l'utilisation de la classeAbstractPdfView dans l'application Spring MVC pour exporter des données vers un fichier pdf à télécharger.

1. je Texte

Obtenez lesiText library pour générer le fichier pdf.

    
    
    com.lowagie
    itext
    2.1.7
    

2. Manette

Une classe de contrôleur, générer des données factices pour la démonstration et obtenir le paramètre de demande pour déterminer quelle vue retourner. Si le paramètre de requête est égal à «PDF», alors renvoie une vue Pdf (AbstractPdfView).

Fichier: RevenueReportController.java

package com.example.common.controller;

import java.util.HashMap;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.web.bind.ServletRequestUtils;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.AbstractController;

public class RevenueReportController extends AbstractController{

    @Override
    protected ModelAndView handleRequestInternal(HttpServletRequest request,
        HttpServletResponse response) throws Exception {

        String output =
            ServletRequestUtils.getStringParameter(request, "output");

        //dummy data
        Map revenueData = new HashMap();
        revenueData.put("1/20/2010", "$100,000");
        revenueData.put("1/21/2010", "$200,000");
        revenueData.put("1/22/2010", "$300,000");
        revenueData.put("1/23/2010", "$400,000");
        revenueData.put("1/24/2010", "$500,000");

        if(output ==null || "".equals(output)){
            //return normal view
            return new ModelAndView("RevenueSummary","revenueData",revenueData);

        }else if("PDF".equals(output.toUpperCase())){
            //return excel view
            return new ModelAndView("PdfRevenueSummary","revenueData",revenueData);

        }else{
            //return normal view
            return new ModelAndView("RevenueSummary","revenueData",revenueData);

        }
    }
}

3. PdfRevenueReportView

Créez une vue pdf en étendant la classeAbstractPdfView, remplacez la méthodebuildExcelDocument() pour remplir les données dans un fichier pdf. LeAbstractPdfView utilise l'API iText pour générer le fichier pdf.

Fichier: PdfRevenueReportView.java

package com.example.common.view;

import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.web.servlet.view.document.AbstractPdfView;
import com.lowagie.text.Document;
import com.lowagie.text.Table;
import com.lowagie.text.pdf.PdfWriter;

public class PdfRevenueReportView extends AbstractPdfView{

    @Override
    protected void buildPdfDocument(Map model, Document document,
        PdfWriter writer, HttpServletRequest request,
        HttpServletResponse response) throws Exception {

        Map revenueData = (Map) model.get("revenueData");

        Table table = new Table(2);
        table.addCell("Month");
        table.addCell("Revenue");

        for (Map.Entry entry : revenueData.entrySet()) {
            table.addCell(entry.getKey());
            table.addCell(entry.getValue());
                }

        document.add(table);
    }
}

4. Configuration du ressort

Créez unXmlViewResolver pour la vue Pdf.



 

    

    
       
          /WEB-INF/spring-pdf-views.xml
       
    

Fichier: spring-pdf-views.xml



   
   

5. Demo

Il génère un fichier pdf à télécharger par l'utilisateur.

SpringMVC-PDF-Example

Télécharger le code source

Téléchargez-le -SpringMVC-PDF-Example.zip (9 Ko)