ktrinad Posted August 20, 2006 Share Posted August 20, 2006 By: alex - alexmywish how to print a report just by client user 2004-06-18 22:47hi,all. I have created the report. and client user can browse the report 2. but I wanna the client user can print the report by himself,and not just print the report by IE .And the printer is not installed in the server. Here is my plan, but it doesn`t work,can anyone help me? I user servlet and applet,the servlet create the report and the applet control the print. here is the code: Jrprintservlet.java import javax.servlet.*; import javax.servlet.http.*; import java.io.*; import java.util.*; import dori.jasper.engine.*; import dori.jasper.engine.util.*; import dori.jasper.engine.export.*; public class JRPrintServlet extends HttpServlet { java.sql.Connection sqlConn; java.sql.Statement sqlStmt; java.sql.ResultSet sqlRst; //regiester jdbc driver // Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver").newInstance(); //connect to the database public void service( HttpServletRequest request, HttpServletResponse response ) throws IOException, ServletException{ Map parameters = new HashMap(); try { Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver").newInstance(); sqlConn=java.sql.DriverManager.getConnection("jdbc:microsoft:sqlserver://127.0.0.1:1433;DatabaseName=test;SelectMethod=direct","sa","";); System.setProperty( "jasper.reports.compile.class.path", getServletContext().getRealPath("/WEB-INF/lib/jasperreports-0.5.3.jar") + System.getProperty("path.separator") + getServletContext().getRealPath("/WEB-INF/classes/") ); System.setProperty( "jasper.reports.compile.temp", getServletContext().getRealPath("/reports/") ); JasperCompileManager.compileReportToFile(getServletContext().getRealPath("/reports/alex.xml")); parameters.put("ReportTitle", "report"); JasperCompileManager.compileReportToFile(getServletContext().getRealPath("/reports/alex.xml")); File reportFile = new File(getServletContext().getRealPath("/reports/alextest.jasper")); JasperReport jrt = (JasperReport)JRLoader.loadObject(reportFile.getPath()); JasperPrint jpt = JasperFillManager.fillReport(jrt,parameters,sqlConn); response.setContentType("application/octet-stream"); ServletOutputStream ouputStream = response.getOutputStream(); ObjectOutputStream oos = new ObjectOutputStream(ouputStream); oos.writeObject(jpt); oos.flush(); oos.close(); } catch (Exception e){ e.printStackTrace(); } } } JRPrinterApplet.java: import java.awt.*; import java.awt.event.*; import java.applet.*; import java.io.*; import java.util.*; import dori.jasper.engine.*; import dori.jasper.engine.util.*; import dori.jasper.engine.export.*; import java.net.*; public class JRPrinterApplet extends Applet { private URL url = null; private boolean isStandalone = false; private TextField textField1 = new TextField(); public void init(){ try { jbInit(); } catch(Exception e) { e.printStackTrace(); } } private void jbInit() throws Exception { textField1.setText("printing...."); //String strUrl = "/JRPrintServlet"; String strUrl = getParameter("REPORT_URL"); System.out.println("strUrl="+strUrl); if(strUrl!=null){ try{ System.out.println(getCodeBase()); url = new URL(getCodeBase(),strUrl); System.out.println("url="+url); }catch(Exception e){ e.printStackTrace(); } } if(url!=null){ try{ //textField1.setText(url.toString()); System.out.println("url123="+url); Object obj = dori.jasper.engine.util.JRLoader.loadObject(url); JasperPrintManager.printReport((JasperPrint)obj, true); }catch(Exception e){ e.printStackTrace(); } } this.add(textField1, null); } } Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now