ireport+applet 客户端打印

Applet 类代码

package code.main.bean.controller.common;

import java.applet.Applet;
import java.io.PrintWriter;
import java.io.StringWriter;
import java.net.URL;

import javax.swing.JOptionPane;

import net.sf.jasperreports.engine.JasperPrint;
import net.sf.jasperreports.engine.JasperPrintManager;
import net.sf.jasperreports.engine.util.JRLoader;

public class JRPrinterApplet extends javax.swing.JApplet    
{    
   
   
    /**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	/**   
     *   
     */   
    private URL url = null;    
    private JasperPrint jasperPrint = null;    
   
   
    /** Creates new form AppletViewer */   
    public JRPrinterApplet()    
    {    
            
    }    
   
   
    /**   
    *   
    */   
    public void init()    
    {    
    	System.out.println("Applet已经开始初始化");
        String strUrl = getParameter("REPORT_URL");
        if (strUrl != null)    
        {    
            try   
            {   
                url = new URL(getCodeBase(),strUrl);  
            }    
            catch (Exception e)    
            {    
                StringWriter swriter = new StringWriter();    
                PrintWriter pwriter = new PrintWriter(swriter);    
                e.printStackTrace(pwriter);    
                JOptionPane.showMessageDialog(this, swriter.toString());    
            }    
        }    
        else   
        {    
        JOptionPane.showMessageDialog(this, "init():Source URL not specified");    
        }  
    	System.out.println("Applet初始化完成");
    }    
   
    public void start() {    
    	System.out.println("Applet开始运行");
        if (url != null)    
        {    
            if (jasperPrint == null)    
            {    
                try   
                {    
                    System.out.println("url="+url);
                	System.out.println("进入start方法,即将加载jasperPrint对象");
                    jasperPrint = (JasperPrint)JRLoader.loadObject(url);  
                    System.out.println("加载jasperPrint对象");
                }    
                catch (Exception e)    
                {    
                    StringWriter swriter = new StringWriter();    
                    PrintWriter pwriter = new PrintWriter(swriter);    
                    e.printStackTrace(pwriter);    
                    JOptionPane.showMessageDialog(this, swriter.toString());    
                }    
            }  
            if (jasperPrint != null)    
            {                   
                final JasperPrint print = jasperPrint;    
                    
                Thread thread = new Thread    
                    (    
                        new Runnable()    
                        {    
                            public void run()    
                            {    
                                try     
                                {    
                                 System.out.println("jasperPrint加载完成,即将打印pdf文件");
                                    JasperPrintManager.printReport(print, true);    
                                }    
                                catch (Exception e)     
                                {    
                                    StringWriter swriter = new StringWriter();    
                                    PrintWriter pwriter = new PrintWriter(swriter);    
                                    e.printStackTrace(pwriter);    
                                    JOptionPane.showMessageDialog(null, swriter.toString());    
                                }    
                            }    
                        }    
                    );
                thread.start();    
            }    
            else   
            {    
                JOptionPane.showMessageDialog(this, "Empty report.");    
            }    
        }    
        else   
        {    
            JOptionPane.showMessageDialog(this, "start():Source URL not specified");    
        }
    	System.out.println("Applet运行结束");
   
    }    
        
}


输出printObj


package code.main.bean.controller.common;

import java.io.ObjectOutputStream;
import java.util.HashMap;
import java.util.Map;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import net.sf.jasperreports.engine.JasperFillManager;
import net.sf.jasperreports.engine.JasperPrint;

@Controller
@RequestMapping("PrintDJ")
public class PrintDJController {
	private static final String CONTENTTYPE = "application/octet-stream";   
	@RequestMapping("printTest")
	@SuppressWarnings("unchecked")
	public void printYsf(HttpServletRequest request,
			HttpServletResponse response, String billCode) throws Exception {
		response.setContentType(CONTENTTYPE); 
		System.out.println("开始调用print请求");
		request.setCharacterEncoding("utf-8");
		String reportPath = request.getSession().getServletContext()
				.getRealPath("/reports/test.jasper");
		//response.reset();
		System.out.println(billCode);
		Map params = new HashMap();
		params.put("name", "god");
		params.put("sex", "无");
		params.put("age", billCode);
		JasperPrint print = JasperFillManager.fillReport(reportPath,params);
		//JasperPrintManager.printReport(print, true);
		//PrintWriter out = response.getWriter();
		ServletOutputStream ouputStream = response.getOutputStream(); 
		ObjectOutputStream out = new ObjectOutputStream(ouputStream); 
		out.writeObject(print);//将JasperPrint对象写入对象输出流中 
		//PrintWriter out;
		//out.write("{'success':true,'demoData':'yes'}");
		out.flush();
		out.close();
		System.out.println("请求完毕关闭输出流");
		
	}


}



页面部分

var url = "/JRPrintServlet";
document.write('<APPLET ID="JrPrt" CODE="com.defonds.test.JRPrinterApplet.class" CODEBASE = "./" ARCHIVE = "reportprint.jar" WIDTH = "0" HEIGHT = "0">');
document.write('<PARAM NAME = "type" VALUE="application/x-java-applet;version=1.2.2">');
document.write('<PARAM NAME = "scriptable" VALUE="false">');
document.write('<PARAM NAME = "REPORT_URL" VALUE ="'+url+'">');
document.write('</APPLET>'); 


右键点击 Applet类,run as java applet,如果运行通过就可以打包签名了

将 jasperreport 目录下的 jasperreports-3.0.1-applet.jar 解压。在任一磁盘根目录下新建一文件夹 temp,将 jasperreports-3.0.1-applet.jar 解压后的 META-INF、net、default.jasperreports.properties(这个一定要复制,不然会报 NullPointer 异常)全部复制到 temp下,将 test2 项目下的 WEB-INF 下 classes 中的文件 com 也复制到 temp 下。
CMD 命令, E:/temp>
下键入 jar -cvf reportprint.jar *
temp 目录下会生成 reportprint.jar 包。
用keytool生成证书:keytool -genkey -alias printkey -keystore printstore
还是用keytool导出证书:keytool -export -keystore printstore -alias printkey -file print.cer
用jarsigner给reportprint.jar加上数字签名:jarsigner -keystore printstore reportprint.jar printkey
以上都是在命令提示符下运行,printkey和printstore都可以以自己的命名方式来命名。现在在temp下已经有了一个reportprint.jar和一个print.cer,把这两个文件拷贝回项目中,记得还是放在同一个目录下(最好是根目录,即项目的 WebRoot 下)。



原文:http://blog.csdn.net/defonds/article/details/4440697

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值