ireprot客户端打印方案

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

考虑一下几点:

1. javascript 和applet互相通信。applet和前台界面交互,可以让客户感觉不到有applet 的存在。

2. applet和后台相互通信。applet既可以接受后台转递的参数、对象流等等还可以把信息返回到后台。

3. applet只实现打印和预览,主要的业务操作需要在后台完成。

上篇中提到print.js:

新建一jsp页面PrintReportApplet.jsp

次jsp页面就一个按钮

这样我们就可以在当前页面中引用到applet了,

document.applets.myApplet.reportViewer() 拿到applet的窗口句柄后调用applet的reportViewer()方法

我们也可以在此jsp页面写一个初始化的方法传递参数到applet中,当然也可以直接传递参数到reportViewer(parameter String);

function getParameters() {

return "&pid=0001"

}

在print.js中指定

VALUE="com.isoftstone.pcis.report.print.applet.PrinterApplet" />

PrinterApplet中reportViewer

// javascript预览报表

public void reportViewer() {

try {

win = JSObject.getWindow(this);

paraStr = win.eval("getParameters()").toString();

if ("".equals(paraStr) || paraStr == null) {

return;

}

System.out.println("paraStr=======>" + paraStr);

} catch (Exception e1) {

e1.printStackTrace();

}

if (url == null) {

if (requestUrl != null) {

try {

/**//*

* applet与Servlet交互 URL传递页面传来的参数请求服务器Servlet * 把applet传递的参数追加到servlet中 2008-10-14 laoshulin

*/

url = new URL(getCodeBase(), requestUrl + "?printView=true" + paraStr);

if (url == null) {

JOptionPane.showMessageDialog(this,

"Source URL not specified");

} else {

InputStream in = url.openStream();

ObjectInputStream objIn = new ObjectInputStream(in);

Object obj = objIn.readObject();

if (obj instanceof JasperPrint) {

} else {

JOptionPane.showMessageDialog(this, obj.toString());

return;

}

if (jasperPrint == null) {

// 根据Servlet返回的URL(ObjectStream)产生JasperPrint对象

jasperPrint = (JasperPrint) obj;

}

// 拦截出现空报表问题

if (jasperPrint != null

&& jasperPrint.getPages().size() > 0) {

/**//*

* 调用JasperReport.jar中JasperViewer绘制报表Frame

* JasperViewer继承自JFrame,采用setDefaultCloseOperation 响应关闭窗口事件

*/

ViewerFrame viewerFrame = new ViewerFrame(this

.getAppletContext(), jasperPrint);

viewerFrame.setVisible(true);

//viewerFrame.show();

// JasperViewer viewer = new

// JasperViewer(jasperPrint);

// viewer.setVisible(true);

// viewer.setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_ CLOSE);

// 如果请求为空弹出对话框予以提示

} else {

JOptionPane

.showMessageDialog(this,

"Please check Your Report SQL! It resulted in empty Report! ");

return;

}

}

} catch (Exception e) {

StringWriter swriter = new StringWriter();

PrintWriter pwriter = new PrintWriter(swriter);

相关文档
最新文档