Aditya Ekbote Aditya Ekbote - 14 days ago 12
Java Question

How to open PDF file in JSP

I have a web application in which I am creating PDF reports using JasperReport. I have hosted my website.

<%@page contentType="text/html" pageEncoding="UTF-8"%>
<%@page import="java.sql.*" %>
<%@page import="net.sf.jasperreports.engine.JasperExportManager"%>
<%@page import="net.sf.jasperreports.engine.JasperExportManager"%>
<%@page import="net.sf.jasperreports.view.JasperViewer"%>
<%@page import="net.sf.jasperreports.engine.JasperPrint"%>
<%@page import="net.sf.jasperreports.engine.JasperReport"%>
<%@page import="net.sf.jasperreports.engine.JasperFillManager"%>
<%@page import="net.sf.jasperreports.engine.JRResultSetDataSource"%>
<%@page import="net.sf.jasperreports.engine.JasperCompileManager"%>
<%@page import="net.sf.jasperreports.*"%>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>JSP Page</title>
</head>
<body>
<%
String invno=request.getParameter("invno");
try {
String absolutePath = getServletContext().getRealPath("clDS_Close.jrxml");
JasperReport jasperReport=JasperCompileManager.compileReport(absolutePath);
Class.forName("com.mysql.jdbc.Driver");
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/t_fleet","root","aadi");

Statement stmt = null;
ResultSet rset = null;
Statement st2=conn.createStatement();

String queryString = "select tbl_invoice.*,tbl_package.package_name,tbl_package.basic_hr,tbl_package.basic_km,tbl_package.amount from tbl_invoice inner join tbl_package on tbl_invoice.package_id=tbl_package.package_id where tbl_invoice.invoice_no="+invno+"";
stmt = conn.createStatement();
rset = stmt.executeQuery(queryString);
JRResultSetDataSource jasperReports = new JRResultSetDataSource(rset);
JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport,null, jasperReports);

String filename=null;
filename="CL"+invno+".pdf";

//Report saved in specified path
JasperExportManager.exportReportToPdfFile(jasperPrint,filename);

//Report open in Runtime
String createdFile = getServletContext().getRealPath(filename);
out.println(createdFile);
Runtime.getRuntime().exec("rundll32 url.dll,FileProtocolHandler " +filename);
} catch(Exception e) {
out.println(e);
}
%>
</body>
</html>


I am accepting invoice number from user and opening PDF file for that invoice.

My problem is my pdf file is getting created and stored to path but, I don't know how to open it. There is a method
RunTime.getRunTime.exec()
in windows. But I think this will not work because as I have hosted my web application to free domain, this method will not work there.
Please tell me alternative for above method so that I can open my PDF file stored in specific path.

Answer

Simply use response.sendRedirect().