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.
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 MaprevenueData = 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 { MaprevenueData = (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.
Télécharger le code source
Téléchargez-le -SpringMVC-PDF-Example.zip (9 Ko)