Java 如何从servlet打印Jasper报告?

Java 如何从servlet打印Jasper报告?,java,servlets,web,printing,jasper-reports,Java,Servlets,Web,Printing,Jasper Reports,我正试图从web应用程序的servlet打印Jasper报告。下面是调用打印功能的代码 //Print the report HashMap<String, Object> params = new HashMap<String, Object>(); params.put("companyName",userBean.getCompanyName().trim()); par

我正试图从web应用程序的servlet打印Jasper报告。下面是调用打印功能的代码

//Print the report
                HashMap<String, Object> params = new HashMap<String, Object>();
                params.put("companyName",userBean.getCompanyName().trim());
                params.put("companyPhone",userBean.getPhone().trim());
                params.put("patientName",demographicsBean.get(0).getfName()+" "+demographicsBean.get(0).getmName()+" "+demographicsBean.get(0).getlName());
                params.put("patientAge",String.valueOf(demographicsBean.get(0).getDob()));
                params.put("address",demographicsBean.get(0).getAdrLine1()+" "+demographicsBean.get(0).getAdrLine2());
                java.util.Date date = new java.util.Date(); 
                params.put("date",String.valueOf(new Date(Calendar.getInstance().getTimeInMillis())));
                params.put("doctorName",subUserBean.getFirstName()+" "+subUserBean.getLastName());
                params.put("drugName",drug);
                params.put("ptInstructions",ptInstructionsTxt);
                params.put("quantity",request.getParameter("quantityTxt"));
                params.put("refills",refilTxt);

                  Connection connection = DBMaster.getInstance().getConnection();

                ReportConnector r = new ReportImpl();                
                r.printReport(getClass().getResourceAsStream("/ReportResources/Prescription2.jasper"), params,connection); 
//打印报告
HashMap params=新的HashMap();
put(“companyName”,userBean.getCompanyName().trim());
put(“companyPhone”,userBean.getPhone().trim());
参数put(“patientName”,demographicsBean.get(0.getfName()+”+demographicsBean.get(0.getmName()+”+demographicsBean.get(0.getlName());
params.put(“patientAge”,String.valueOf(demographicsBean.get(0.getDob());
params.put(“地址”,demographicsBean.get(0.getAdrLine1()+“”+demographicsBean.get(0.getAdrLine2());
java.util.Date Date=新建java.util.Date();
params.put(“date”,String.valueOf(新日期(Calendar.getInstance().getTimeInMillis()));
put(“doctorName”,subUserBean.getFirstName()+“”+subUserBean.getLastName());
参数put(“药物名称”,药物);
参数put(“pInstructions”,pInstructionsTXT);
params.put(“数量”,request.getParameter(“quantityTxt”);
参数put(“重新填充”,重新填充文本);
连接连接=DBMaster.getInstance().getConnection();
ReportConnector r=新的ReportImpl();
r、 printReport(getClass().getResourceAsStream(“/ReportResources/Prescription2.jasper”),参数,连接);
下面是打印报告的代码

public void printReport(InputStream path, Map<String, Object> params, Connection con) throws JRException
    {
       JasperPrint jasperPrint = JasperFillManager.fillReport(path, params, con);

       JasperPrintManager.printReport(jasperPrint, false);
    }
public void打印报告(InputStream路径、映射参数、连接con)引发异常
{
JasperPrint JasperPrint=JasperFillManager.fillReport(路径、参数、con);
JasperPrintManager.printReport(jasperPrint,false);
}
问题是,尽管这在localhost中有效,但没有打印任何内容(我现在没有打印机,但是
MS One Note
应该作为打印机打开。这在localhost中发生)


这里出了什么问题?

尝试保留withPrintDialog标志,看看它是否显示了有用的内容。或者尝试使用JRPrintServiceExporter而不是JasperPrintManager。这里的示例只是为了说明问题-您是否知道此代码将在服务器端打印报告-而不是在客户端(浏览器端)?@defectus:我没有,但后来我打印了。如何在客户端打印此文件?通常,我会让Jasper生成一个PDF文件,并将其作为“内容类型”
application/PDF
发送到浏览器。可以在此处找到一个示例: