package
com.vincent.report.demo;
import
net.sf.jasperreports.engine.
*
;
import
javax.servlet.ServletException;
import
javax.servlet.ServletOutputStream;
import
javax.servlet.http.HttpServlet;
import
javax.servlet.http.HttpServletRequest;
import
javax.servlet.http.HttpServletResponse;
import
java.io.File;
import
java.io.IOException;
import
java.util.Map;
import
java.util.TreeMap;
/**
* 测试
* Created by IntelliJ IDEA.
* User: liuxiaohua
* Date: 2008-4-28
* Time: 8:43:38
* To change this template use File | Settings | File Templates.
*/
public
class
Demo
extends
HttpServlet {
@SuppressWarnings(
"
deprecation
"
)
public
void
service(HttpServletRequest request, HttpServletResponse response)
throws
ServletException, IOException {
String doType
=
request.getParameter(
"
doType
"
);
try
{
//
Jasper 文件
File reportFile
=
new
File(request.getRealPath(
"
/jasperreport/liuxiaohua_report.jasper
"
));
Map paramter
=
new
TreeMap();
//
背景图片做为参数传递,不用写绝对路径
paramter.put(
"
image
"
, request.getRealPath(
"
/jasperreport/report.gif
"
));
//
根据 doType 的不同,传递不同的参数(是否传递背景图片)
//
这里需要注意的是:这报表的设计的时候 image 这个参数的 Use as a Prompt 复选框不要选
//
如果你选了那你一定要传递这个参数过去
//
这样你就在显示报表的时候传递一个背景图,打印时不传递背景图,打印出来的报表就没有背景了
//
这样就可以实现套打,具体打印代码我就不写了。
byte
[] bytes
=
JasperRunManager.runReportToPdf(
reportFile.getPath(), doType.equalsIgnoreCase(
"
"
)
?
null
: paramter,
new
JREmptyDataSource());
//
生成PDF文件
response.setContentType(
"
application/pdf
"
);
ServletOutputStream ouputStream
=
response.getOutputStream();
ouputStream.write(bytes,
0
, bytes.length);
ouputStream.flush();
ouputStream.close();
}
catch
(Exception e) {
System.out.println(
"
error
"
); e.printStackTrace(); } }}