Which version of BO are you using?
We have BO XI 3,1 SP 5.3
I modified in this way:
downloadPDForXLS.jsp
<%@ page language="java" contentType="application/pdf" errorPage="errorPage4Download.jsp" import="com.businessobjects.rebean.wi.*,com.businessobjects.adv_ivcdzview.*,java.util.*"%><jsp:useBean id="objUtils" class="com.businessobjects.adv_ivcdzview.Utils" scope="application" /><jsp:useBean id="objUserSettings" class="com.businessobjects.adv_ivcdzview.UserSettings" scope="session" /><jsp:useBean id="requestWrapper" class="com.businessobjects.adv_ivcdzview.RequestWrapper" scope="page" /><%
response.reset();
response.setDateHeader("expires", 0);
requestWrapper.onStart(request);
requestWrapper.setCharacterEncoding("UTF-8");
String strEntry = requestWrapper.getQueryParameter("sEntry", true);
String strViewType = requestWrapper.getQueryParameter("viewType", true);
String strSaveReport = requestWrapper.getQueryParameter("saveReport", false, "N");
DHTMLLogger _logger = Utils.getLogger("com.businessobjects.dhtml." + requestWrapper.getCurrentPageName());
_logger.info("viewType=" + strViewType);
if (strViewType.equals("P"))
{
String theAgent = request.getHeader("user-agent");
if (null == theAgent) theAgent = "";
if (theAgent.equalsIgnoreCase("contype"))
{
response.setHeader("Content-Type", "application/pdf");
response.setStatus(HttpServletResponse.SC_OK);
return;
}
}
ReportEngines reportEngines = (ReportEngines)session.getAttribute(ViewerTools.SessionReportEngines);
DocumentInstance doc = reportEngines.getDocumentFromStorageToken(strEntry);
BinaryView objBinaryView = null;
String strContentType = "";
String strDocExt = "";
Reports arrReports = null;
Report objReport = null;
if(strSaveReport.equalsIgnoreCase("Y"))
{
String iReport = requestWrapper.getQueryParameter("iReport", true);
int nReportIndex = Integer.parseInt(iReport);
arrReports = doc.getReports();
objReport = arrReports.getItem(nReportIndex);
objReport.setPaginationMode(PaginationMode.Listing);
}
if (strViewType.equalsIgnoreCase("P"))
{
strDocExt = ".pdf";
strContentType = "application/pdf";
if (request.getHeader("User-Agent").equalsIgnoreCase("contype"))
{
response.setHeader("Content-Type", strContentType);
return;
}
if(strSaveReport.equalsIgnoreCase("Y"))
{
objBinaryView = (BinaryView)objReport.getView(OutputFormatType.PDF);
_logger.info(" download report as PDF");
}
else
{
objBinaryView = (BinaryView)doc.getView(OutputFormatType.PDF);
_logger.info(" download document as PDF");
}
}
else if (strViewType.equalsIgnoreCase("X"))
{
strDocExt = ".xls";
strContentType = "application/vnd.ms-excel";
if(strSaveReport.equalsIgnoreCase("Y"))
{
objBinaryView = (BinaryView)objReport.getView(OutputFormatType.XLS);
_logger.info(" download report as Excel");
}
else
{
objBinaryView = (BinaryView)doc.getView(OutputFormatType.XLS);
_logger.info(" download document as Excel");
}
}
else if (strViewType.equalsIgnoreCase("T"))
{
strDocExt = ".txt";
strContentType = "application/txt";
if(strSaveReport.equalsIgnoreCase("Y"))
{
objBinaryView = (BinaryView)objReport.getView(OutputFormatType.TEXT);
_logger.info(" download report as Text");
}
}
else if (strViewType.equalsIgnoreCase("O"))
{
strDocExt = ".xls";
strContentType = "application/vnd.ms-excel";
if(strSaveReport.equalsIgnoreCase("Y"))
{
objBinaryView = (BinaryView)objReport.getView(OutputFormatType.XLSDataCentric);
_logger.info(" download report as Optimized Excel");
}
else
{
objBinaryView = (BinaryView)doc.getView(OutputFormatType.XLSDataCentric);
_logger.info(" download document as Optimized Excel");
}
}
else
{
String strMsg = "Unknown document view type: " + strViewType;
throw new Exception(strMsg);
}
String strDocName = doc.getProperties().getProperty(PropertiesType.NAME, "");
int iLength = objBinaryView.getContentLength();
response.setContentLength(iLength);
response.setContentType(strContentType);
response.setHeader("Content-Disposition", "attachment;filename=\"" + ViewerTools.encodeDocName4Download(strDocName) + strDocExt + "\"");
ServletOutputStream Output = response.getOutputStream();
objBinaryView.getContent(Output);
Output.close();
objBinaryView = null;
doc = null;
arrReports = null;
objReport = null;
%>
getImage.jsp
<%@ page language="java" import="com.businessobjects.rebean.wi.*,com.businessobjects.adv_ivcdzview.*,java.util.*"%><jsp:useBean id="requestWrapper" class="com.businessobjects.adv_ivcdzview.RequestWrapper" scope="page" /><%
try
{
response.reset();
long now = System.currentTimeMillis();
response.setDateHeader("Expires", now + 120000);
requestWrapper.onStart(request);
requestWrapper.setCharacterEncoding("UTF-8");
String strEntry = requestWrapper.getQueryParameter("sEntry");
if (strEntry == null)
throw new Exception("Internal Error: Missing sEntry parameter.");
String strImageName = requestWrapper.getQueryParameter("name");
if ( strImageName == null )
throw new Exception("Internal Error: Missing name parameter.");
ReportEngines reportEngines = (ReportEngines)session.getAttribute(ViewerTools.SessionReportEngines);
DocumentInstance doc = reportEngines.getDocumentFromStorageToken(strEntry);
Image objImage = doc.getImage(strImageName);
ServletOutputStream Output = response.getOutputStream();
response.setContentType( objImage.getContentType() );
response.setContentLength(objImage.getContentLength());
objImage.getContent(Output);
Output.close();
objImage = null;
doc = null;
}
catch(Exception e)
{
e.printStackTrace();
}
%>
getKindIcon.jsp
<%@ page language="java" import="java.io.*,com.businessobjects.rebean.wi.*,com.businessobjects.adv_ivcdzview.*,java.util.*,com.crystaldecisions.sdk.framework.IEnterpriseSession,com.crystaldecisions.sdk.occa.pluginmgr.IPluginInfo"%><jsp:useBean id="requestWrapper" class="com.businessobjects.adv_ivcdzview.RequestWrapper" scope="page" /><%
requestWrapper.onStart(request);
DHTMLLogger _logger = Utils.getLogger("com.businessobjects.dhtml." + requestWrapper.getCurrentPageName());
try
{
response.reset();
requestWrapper.setCharacterEncoding("UTF-8");
boolean isAlive = (session.getAttribute(ViewerTools.SessionAlive) == null)?false:true;
if (!isAlive) return;
String strSession = (String)session.getAttribute(ViewerTools.SessionEntSessionName);
if (strSession == null)
{
strSession = "CE_ENTERPRISESESSION";
session.setAttribute(ViewerTools.SessionEntSessionName, strSession);
}
IEnterpriseSession entSession = (IEnterpriseSession) session.getAttribute(strSession);
String progID = requestWrapper.getQueryParameter("progID");
if (progID == null)
throw new Exception("Internal Error: Missing progID parameter.");
IPluginInfo info = entSession.getPluginManager().getPluginInfo(progID);
InputStream stream = info.getPicture();
if (stream == null) {
_logger.error("IPluginInfo=" + info);
_logger.error("stream == null");
return;
}
ServletOutputStream os = response.getOutputStream();
byte[] buffer = new byte[512];
while (-1 != stream.read(buffer)) {
os.write(buffer);
}
os.close();
}
catch(Exception e)
{
_logger.error(e.getMessage());
}
%>
viewAsPDF.jsp
<!--
=============================================================
WebIntelligence(r) Report Panel
Copyright(c) 2001-2005 Business Objects S.A.
All rights reserved
Use and support of this software is governed by the terms
and conditions of the software license agreement and support
policy of Business Objects S.A. and/or its subsidiaries.
The Business Objects products and technology are protected
by the US patent number 5,555,403 and 6,247,008
=============================================================
--><%@ page language="java" contentType="text/html;charset=UTF-8"
%><%@ page import="com.businessobjects.adv_ivcdzview.*,
java.util.*,java.net.URLEncoder"%>
<jsp:useBean id="objUtils" class="com.businessobjects.adv_ivcdzview.Utils" scope="application" />
<jsp:useBean id="requestWrapper" class="com.businessobjects.adv_ivcdzview.RequestWrapper" scope="page"><%
requestWrapper.onStart(request);
requestWrapper.setCharacterEncoding("UTF-8");
%></jsp:useBean><%
try
{
String strEntry = requestWrapper.getQueryParameter("sEntry", true);
String strName = requestWrapper.getQueryParameter("name", true);
if (strName.startsWith("/") && strName.endsWith(".pdf"))
{
int len = strName.length();
strName = strName.substring(1, len-4);
}
String notEncodedStrName = strName;
strName = ViewerTools.encodeDocName4Download(strName);
String strQueryString = requestWrapper.getQueryString();
session.setAttribute(ViewerTools.getSessionVariableKey("VIEWASPDF_QUERYSTRING"), strQueryString);
%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<script type="text/javascript">
var p = parent.parent;
var url = p._root;
p.getHttpServerObject(url+"/html/empty.html", viewPDF)
function viewPDF(xmlhttp)
{
var iPos = url.indexOf('/viewers/cdz_adv');
var pattern=/IIS/gi
var httpServerName = xmlhttp.getResponseHeader("Server");
if(httpServerName.match(pattern))
url = url.substring(0, iPos) + '/ViewAsPDF/<%=URLEncoder.encode(strEntry, "UTF-8")%>/<%=ViewerTools.escapeQuotes(ViewerTools.replace(notEncodedStrName,"%","_",false))%>.pdf';
else
url = url.substring(0, iPos) + '/ViewAsPDF/<%=URLEncoder.encode(strEntry, "UTF-8")%>/<%=ViewerTools.escapeQuotes(strName)%>.pdf';
self.location.replace(url);
}
</script>
</head>
<body></body>
</html>
<%
}
catch(Exception e)
{
objUtils.displayErrorMsg(e, "_ERR_VIEWER_PDFMODE", true, out, session);
}
%>
I’m having yet this exception:
java.lang.NullPointerException
at org.apache.jsp.viewers.cdz_005fadv.getImage_jsp._jspService(getImage_jsp.java:79)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:388)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at com.businessobjects.webutil.websessiontimeout.WebSessionTimeoutFilter.doFilter(WebSessionTimeoutFilter.java:161)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at com.businessobjects.adv_ivcdzview.SetCharacterEncodingFilter.doFilter(Unknown Source)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:861)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:606)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
at java.lang.Thread.run(Unknown Source)
Have you got other ideas?
Thommino79 (BOB member since 2013-03-14)