1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34 package fr.paris.lutece.plugins.jasper.service.export;
35
36 import java.io.File;
37
38 import javax.servlet.http.HttpServletRequest;
39
40 import fr.paris.lutece.plugins.jasper.service.JasperFileLinkService;
41 import fr.paris.lutece.portal.service.util.AppPathService;
42 import fr.paris.lutece.portal.service.util.AppPropertiesService;
43 import net.sf.jasperreports.engine.JRException;
44 import net.sf.jasperreports.engine.JasperPrint;
45 import net.sf.jasperreports.engine.export.FileHtmlResourceHandler;
46 import net.sf.jasperreports.engine.export.HtmlExporter;
47 import net.sf.jasperreports.engine.export.HtmlResourceHandler;
48 import net.sf.jasperreports.export.SimpleExporterInput;
49 import net.sf.jasperreports.export.SimpleHtmlExporterOutput;
50 import net.sf.jasperreports.export.SimpleHtmlReportConfiguration;
51 import net.sf.jasperreports.export.type.HtmlSizeUnitEnum;
52
53
54
55
56
57 public class HtmlJasperRender extends AbstractDefaultJasperRender
58 {
59 private static final String FILE_TYPE = "html";
60 private static final String SRC_TAG_IMAGE_PATH_PREFIX = "plugins/jasper/images/";
61 private static final String SRC_TAG_IMAGE_PATH_SUFFIX = "{0}";
62
63
64
65
66 @Override
67 public String getLink( String strReportId )
68 {
69 return null;
70 }
71
72
73
74
75
76
77
78 public static void delete( File imageFolder )
79 {
80 if ( imageFolder.exists( ) )
81 {
82 File [ ] listFiles = imageFolder.listFiles( );
83
84 for ( int i = 0; i < listFiles.length; i++ )
85 {
86 File file = listFiles [i];
87
88 if ( file.isDirectory( ) )
89 {
90 delete( file );
91 }
92
93 file.delete( );
94 }
95 }
96 }
97
98
99
100
101 @Override
102 public String getFileType( )
103 {
104 return FILE_TYPE;
105 }
106
107
108
109
110 @Override
111 protected byte [ ] getData( HttpServletRequest request, fr.paris.lutece.plugins.jasper.business.JasperReport report, JasperPrint jasperPrint )
112 throws JRException
113 {
114
115 HtmlExporter exporter = new HtmlExporter( );
116 StringBuffer sb = new StringBuffer( );
117
118 SimpleHtmlReportConfiguration configuration = new SimpleHtmlReportConfiguration( );
119 configuration.setWhitePageBackground( false );
120 configuration.setSizeUnit( HtmlSizeUnitEnum.PIXEL );
121 exporter.setConfiguration( configuration );
122
123
124 String strImageFolderPath = AppPropertiesService.getProperty( PROPERTY_IMAGES_FILES_PATH );
125 String strAbsoluteImagePath = new StringBuffer( AppPathService.getWebAppPath( ) ).append( strImageFolderPath ).append( report.getUrl( ) )
126 .append( PATH_SEPARATOR ).append( JasperFileLinkService.INSTANCE.getKey( request ) ).toString( );
127 File imageFolder = new File( strAbsoluteImagePath );
128
129 if ( !imageFolder.exists( ) )
130 {
131 imageFolder.mkdirs( );
132 }
133
134 exporter.setExporterInput( new SimpleExporterInput( jasperPrint ) );
135
136 SimpleHtmlExporterOutput exporterOutput = new SimpleHtmlExporterOutput( sb );
137 HtmlResourceHandler imageHandler = new FileHtmlResourceHandler( imageFolder,
138 new StringBuffer( SRC_TAG_IMAGE_PATH_PREFIX ).append( report.getUrl( ) ).append( PATH_SEPARATOR )
139 .append( JasperFileLinkService.INSTANCE.getKey( request ) ).append( PATH_SEPARATOR ).append( SRC_TAG_IMAGE_PATH_SUFFIX ).toString( ) );
140 exporterOutput.setImageHandler( imageHandler );
141 exporter.setExporterOutput( exporterOutput );
142
143 exporter.exportReport( );
144
145 exporter.reset( );
146
147 return sb.toString( ).getBytes( );
148 }
149 }