Search code examples
javajsppdfjasper-reports

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.


Solution

  • Simply use response.sendRedirect().