首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > Java Web开发 >

200分求大伙儿解决jasperreport通过APPLET客户端打印

2013-11-09 
200分求大家解决jasperreport通过APPLET客户端打印本帖最后由 tangyu477 于 2012-07-10 09:01:30 编辑jasp

200分求大家解决jasperreport通过APPLET客户端打印
本帖最后由 tangyu477 于 2012-07-10 09:01:30 编辑 jasperreport通过APPLET客户端打印,出现了报表样式丢失,
请问谁遇到并解决了呢,希望没遇到的,高手们也给分析分析,直接上代码好了、



Action


public String PrintStanding() throws Exception{

String querydate=request.getParameter("querydate");
String storeid=request.getParameter("storeId");

String storeStatus=request.getParameter("storeStatus");
String goodsType=request.getParameter("goodsType");
String goodsId=request.getParameter("goodsId");

String printUser=request.getParameter("printUser");
String StoreName=request.getParameter("StoreName");
System.out.println();

Map<String, Object> waremap=new HashMap<String, Object>();
waremap.put("goodsType", goodsType);
waremap.put("goodsId", goodsId);
waremap.put("storeid", storeid);
waremap.put("storeStatus", storeStatus);
List<WarehouseGoods> list=warehouseInService.printWareStanding(waremap);



Map<String, Object> parameter = new HashMap<String, Object>();  
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
        parameter.put("QUERY_TIME",sdf.parse(querydate));
        parameter.put("CREATE_USER",printUser);
        parameter.put("STORE_NAME",StoreName);
   
        
        
        
        //对数据和打印模板进行填充
        response.setContentType("application/octet-stream");
        response.setBufferSize(8986000);
ServletOutputStream ouputStream = response.getOutputStream();
//JasperReport jrt = JasperCompileManager.compileReport(request.getRealPath(STANDING_PRINT_MODEL_FILE));// 编译报表格式

JRDataSource dataSource = new JRBeanCollectionDataSource(list);
JasperPrint jpt = JasperFillManager.fillReport(request.getRealPath(STANDING_PRINT_MODEL_FILE), parameter,dataSource);// 匹配数据源,生成JasperPrint
//JasperPrintManager.printReport(report, false);//此处为服务器打印,可以看见报表样式未丢失,但不符合需求,需客户端打印
//打印数据输出
ObjectOutputStream oos = new ObjectOutputStream(ouputStream);
oos.writeObject(jpt);
oos.flush();
oos.close();
        
return null;
}



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 URL url = null;
private JasperPrint jasperPrint = null;

/** Creates new form AppletViewer */
public JRPrinterApplet() {

}
public void init() {
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");
}
}

public void start() {
if (url != null) {
if (jasperPrint == null) {
try {
//System.out.println("进入start方法,即将下载pdf文件");
jasperPrint = (JasperPrint) JRLoader.loadObject(url);
//System.out.println("进入start方法,下载pdf文件完毕");
} 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("进入start方法,即将打印pdf文件");
JasperPrintManager.printReport(print, false);
} 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");
}

}

}




[解决办法]
在WEB客户端直接打印JasperReport报表 :通过applet和servlet通信asperPrint对象
楼主看一下这篇文章,我没有用过applet,所以帮不上你什么忙,希望这文章能解决你的问题
还有下面这个帖子,在评论里面也遇到了你的问题
http://blog.csdn.net/defonds/article/details/4440697
[解决办法]
等待大神指点,希望楼主早日解决这个问题
[解决办法]
你的jsp页面呢?如何将打印的模板嵌入在jsp页面的?
jsp有没有用个<object>控件去放置打印模板?

热点排行