<%@ page language="java" contentType="text/html; charset=utf-8"
pageEncoding="utf-8"%>
<%@ page import="net.sf.jasperreports.engine.*"%>
<%@ page import="java.util.*"%>
<%@ page import="java.io.*"%>
<%@ page import="java.sql.*"%>
<%@ page import="net.sf.jasperreports.engine.util.*"%>
<%@ page import="net.sf.jasperreports.engine.export.*"%>
<html>
<head>
<!-- 插入打印控件 -->
<OBJECT ID="jatoolsPrinter"
CLASSID="CLSID:B43D3361-D075-4BE2-87FE-057188254255"
codebase="jatoolsPrinter.cab#version=5,3,0,0"></OBJECT>
</head>
<script type="text/javascript">
function doPrint(how)
{
//打印文档对象
var myDoc =
{
settings:
{
paperWidth: 2100, //自定义纸张宽度(单位为十分之一毫米)
paperHeight: 1400, //自定义纸张高度(单位为十分之一毫米)
orientation: 1 //打印方向
},
enableScreenOnlyClass:true, // 使所有使用 screen-only 样式类的对象,只在预览、显示时可见,打印时隐藏
documents: document, // 打印页面(div)们在本文档中
marginIgnored: true,
settingsID: 'mydocc', //打印设置的ID保存在注册表中
copyrights: '杰创软件拥有版权 www.jatools.com' // 版权声明必须
};
// 调用打印方法
if(how == '打印预览...')
jatoolsPrinter.printPreview(myDoc,true ); // 打印预览
else if(how == '打印...')
jatoolsPrinter.print(myDoc ,true); // 打印前弹出打印设置对话框
else
jatoolsPrinter.print(myDoc ,false); // 不弹出对话框打印
}
</script>
<body bgcolor="white">
<br>
<input type="button" value="打印预览..." onClick="doPrint('打印预览...')">
<input type="button" value="打印..." onClick="doPrint('打印...')">
<input type="button" value="打印" onClick="doPrint('打印')">
<br>
<%
File reportFile = new File(application
.getRealPath("/jasper/taoda.jasper"));
JasperReport jasperReport = (JasperReport) JRLoader
.loadObject(reportFile.getPath());
Map parameters = new HashMap();
Class.forName("com.mysql.jdbc.Driver");
Connection conn = DriverManager.getConnection(
"jdbc:mysql://localhost:3306/DataName", "user", "password");
JasperPrint jasperPrint = JasperFillManager.fillReport(
jasperReport, parameters, conn);
JRXhtmlExporter exporter = new JRXhtmlExporter();
StringBuffer sbuffer = new StringBuffer();
Map imagesMap = new HashMap();
session.setAttribute("IMAGES_MAP", imagesMap);
exporter
.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint);
exporter.setParameter(JRExporterParameter.OUTPUT_WRITER, out);
exporter
.setParameter(JRHtmlExporterParameter.IMAGES_MAP, imagesMap);
String imgServDirUrl = "/images/";
File imgRealDir = new File(request.getRealPath(File.separator)
+ imgServDirUrl);
if (!imgRealDir.exists()) {
imgRealDir.mkdirs();
}
exporter.setParameter(JRHtmlExporterParameter.IMAGES_URI, request
.getContextPath()
+ imgServDirUrl);
exporter.setParameter(JRHtmlExporterParameter.IMAGES_DIR,
imgRealDir);
exporter.setParameter(
JRHtmlExporterParameter.IS_OUTPUT_IMAGES_TO_DIR,
Boolean.TRUE);
exporter.setParameter(
JRHtmlExporterParameter.IS_USING_IMAGES_TO_ALIGN,
Boolean.FALSE);
exporter.exportReport();
conn.close();
%>
<!-- 插入打印控件 -->
<OBJECT ID="jatoolsPrinter"
CLASSID="CLSID:B43D3361-D075-4BE2-87FE-057188254255"
codebase="jatoolsPrinter.cab#version=5,3,0,0"></OBJECT>
function doPrint(how)
{
//打印文档对象
var myDoc =
{
settings:
{
paperWidth: 2100, //自定义纸张宽度(单位为十分之一毫米)
paperHeight: 1400, //自定义纸张高度(单位为十分之一毫米)
orientation: 1 //打印方向
},
enableScreenOnlyClass:true, // 使所有使用 screen-only 样式类的对象,只在预览、显示时可见,打印时隐藏
documents: document, // 打印页面(div)们在本文档中
marginIgnored: true,
settingsID: 'mydocc', //打印设置的ID保存在注册表中
copyrights: '杰创软件拥有版权 www.jatools.com' // 版权声明必须
};
// 调用打印方法
if(how == '打印预览...')
jatoolsPrinter.printPreview(myDoc,true ); // 打印预览
else if(how == '打印...')
jatoolsPrinter.print(myDoc ,true); // 打印前弹出打印设置对话框
else
jatoolsPrinter.print(myDoc ,false); // 不弹出对话框打印
}
exportPage(page);
writer.write("
4:预览可见,打印不可见。
这样打印的页面jatoolsprinter就可以找到了。可是还有个问题,套打一般的问题都是希望那个底图在预览的时候可见而打印的时候不打印,那么这个问题在jatoolsprinter中是这样处理的。
找到输出img信息的位置如下图
在输出img 的信息中添加 writer.write(" class=\"screen-only\"");现在底图就不会被打印出来了。
5:启动tomcat在web下运行点击打印预览
这篇文章只是对在JsperReport中进行套打进行了介绍。套打当中还会设计到其他的一些问题可以参照早先录的一个视频一步一步教你做web套打(http://www.56.com/u11/v_NTA2MjcyMDM.html),这个就和JsperReport没有任何关系了。
[ 本帖最后由 three 于 2010-7-27 09:35 编辑 ]欢迎光临 杰表技术论坛 (http://bwtvl16d.jatools.com/) | Powered by Discuz! 6.1.0 |