%
/**
* Copyright (c) 2009 Infosoft Global Private Limited
*/
/**
* ChangeLog / Version History:
* ----------------------------
*
* 1.1 [ 19 February 2009 ]
* - Fixed the bug in PDF generation.
* - GZip compression incorporated.
* 1.0 [ 16 February 2009 ]
* - PDF Generation Code.
*
* ----- General Comments ----
* This jsp uses the exportBean present in the request scope to get the values required for pdf generation.
* The StringBuffer err_warn_Codes contains the error codes if any, during the execution.
* In case of "save" action, if the file already exists in the specified, if overwrite is off,
* and Intelligent File Naming is on,
* A new unique filename is created and data is saved to that file.
* Finally, if there are any errors, the request is forwarded to the error page.
*/%><%@ page import="com.fusioncharts.exporter.generators.PDFGenerator"%><%@ page import="com.fusioncharts.exporter.beans.ChartMetadata"%><%@page import="com.fusioncharts.exporter.FusionChartsExportHelper"%><%@page import="java.io.OutputStream" %><%@page import="java.io.File" %><%@page import="java.io.FileOutputStream" %><%@page import="java.io.IOException" %><%@ page import="com.fusioncharts.exporter.ErrorHandler"%><%
String action= (String)exportBean.getExportParameterValue("exportaction");
String exportFormat = (String)exportBean.getExportParameterValue("exportformat");
String exportTargetWindow = (String)exportBean.getExportParameterValue("exporttargetwindow");
String fileNameWithoutExt = (String)exportBean.getExportParameterValue("exportfilename");
String extension = FusionChartsExportHelper.getExtensionFor(exportFormat.toLowerCase());;
String fileName = fileNameWithoutExt+"."+ extension;
String stream = (String)exportBean.getStream();
ChartMetadata metadata= exportBean.getMetadata();
boolean isHTML = false;
if(action.equals("download"))
isHTML=true;
StringBuffer err_warn_Codes = new StringBuffer();
PDFGenerator pdf = new PDFGenerator(stream,metadata);
byte[] pdfBytes= pdf.getPDFObjects(true);
String noticeMessage = "";
String meta_values= exportBean.getMetadataAsQueryString(null,false,isHTML);
if(!action.equalsIgnoreCase("download")){
noticeMessage = "¬ice=";
String pathToWebAppRoot = getServletContext().getRealPath("/");
String pathToSaveFolder = pathToWebAppRoot+File.separator+FusionChartsExportHelper.SAVEPATH;
File saveFolder = new File(pathToSaveFolder);
String completeFilePath = pathToSaveFolder + File.separator + fileName;
String completeFilePathWithoutExt = pathToSaveFolder + File.separator + fileNameWithoutExt;
File saveFile = new File(completeFilePath);
if(saveFile.exists()) {
noticeMessage+=ErrorHandler.getErrorForCode("W509");
if(!FusionChartsExportHelper.OVERWRITEFILE){
if(FusionChartsExportHelper.INTELLIGENTFILENAMING) {
noticeMessage+=ErrorHandler.getErrorForCode("W514");
completeFilePath= FusionChartsExportHelper.getUniqueFileName(completeFilePathWithoutExt,extension);
File tempFile= new File(completeFilePath);
fileName = tempFile.getName();
noticeMessage+=ErrorHandler.getErrorForCode("W515")+ fileName;
err_warn_Codes.append("W515,");
}
}
}
FileOutputStream fos = new FileOutputStream(completeFilePath);
try {
for(int i = 0; i < pdfBytes.length; i++)
fos.write(pdfBytes[i]);
fos.flush();
fos.close();
}catch(IOException e){
err_warn_Codes.append("E600,");
}
// In Save mode, send back Successful response back to chart
String pathToDisplay=FusionChartsExportHelper.HTTP_URI+"/"+fileName;
if (FusionChartsExportHelper.HTTP_URI.endsWith("/")) {
pathToDisplay=FusionChartsExportHelper.HTTP_URI+fileName;
}
// In save mode, isHTML is false
meta_values =exportBean.getMetadataAsQueryString(pathToDisplay,false,isHTML);
/*noticeMessage+="&fileName="+ pathToDisplay;
noticeMessage+="&width="+ metadata.getWidth();
noticeMessage+="&height="+ metadata.getHeight();*/
if(err_warn_Codes.indexOf("E")== -1){
// if there are no errors
out.print(meta_values+noticeMessage+"&statusCode=1&statusMessage=successful");
}
}
else {
// PDF Streaming
response.setContentType(FusionChartsExportHelper.getMimeTypeFor(exportFormat.toLowerCase()));
if(exportTargetWindow.equalsIgnoreCase("_self")){
response.addHeader("Content-Disposition", "attachment; filename=\""+fileName+"\"");
//response.addHeader("Content-length",""+ios.length());
}
else {
response.addHeader("Content-Disposition", "inline; filename=\""+fileName+"\"");
}
OutputStream os = response.getOutputStream();
for(int i = 0; i < pdfBytes.length; i++)
os.write(pdfBytes[i]);
os.flush();
//os.close();
}
if(err_warn_Codes.indexOf("E") != -1) {
meta_values =exportBean.getMetadataAsQueryString(null,true,isHTML);
%>
<% }// end of if error
%>