Java_实现iReport打印

Java_实现iReport打印
Java_实现iReport打印

iReport报表打印功能代码编写环境

系统:windows xp

开发工具:Myeclipes6.0

JDK版本:Java6(jdk6.0,jre6.0)

服务器:Tomcat5.5

Ireport版本:iReport-2.0.5 windows 安装版(iReport-2.0.5-windows-installer.exe)

实现步骤

一、iReport-2.0.5安装。选择安装路径默认安装(一直点击下一步)。

二、将iReprot的jasperreports-2.0.5.jar文件复制到Myeclipes中你工程的WEB-INF/lib目录下。

jasperreports-2.0.5.jar文件所在位置在你iReprot的安装路径下,我的是C:\Program Files\JasperSoft\iReport-2.0.5\lib。

三、要实现打印的Jsp文件编写,Jsp文件中打印按钮或者打印连接应该提交给一个javascript,

具体代码如:

color="blue">打印

javascript代码如下

function print(oid){

if(!confirm("确定要打印该资格证吗?"))

return ;

window.showModalDialog('${ctx}/exam/exammanage/examprint_cert.jsp?oid='

+oid,'','dialogWidth:50px;dialogHeight:150px;dialogTop:1000px;dialogLef t:1000px');

document.forms[0].flg.value = "0";

document.forms[0].action="${ctx}/ExamPermitPrint.html";

document.forms[0].submit();

}

代码解释:

1、

window.showModalDialog('${ctx}/exam/exammanage/examprint_cert.jsp?oid='

+oid,'','dialogWidth:50px;dialogHeight:150px;dialogTop:1000px;dialogLef t:1000px');

此段的功能是显示打印提示窗口,我的文件是WebRoot路径下/exam/exammanage/路径下的examprint_cert.jsp文件,而且需要传一个你所要打印的记录的唯一字段(数据库中唯一代表一条记录的字段),我这里用OID。

2.document.forms[0].action="${ctx}/ExamPermitPrint.html";

document.forms[0].submit();

此代码是当你打印成功执行完之后要执行的代码,例如重新查询记录列表

四、打印提示窗口文件examprint_cert.jsp编写

examprint_cert.jsp

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>

考试管理子系统

<% String oid = request.getParameter("oid"); %>//取得你在javascript中传进来的oid

classid=clsid:8AD9C840-044E-11D1-B3E9-00805F499D93>

VALUE="com.bb.employment.webapp.action.JsperApplet.class">

VALUE="<%=request.getContextPath()%>/exam/lib/printer.jar">

VALUE="<%=request.getContextPath()%>/ExamPermitPrintApply.html?oid=<%=o id%>">

<%=oid %>正在向打印机传送,请等待!打印成功后再关闭此窗口。

代码解释:

1、codeBase=lib/jinstall-1_5_0-windows-i586.cab#Version=1,5,0,0

height=0 width=0 classid=clsid:8AD9C840-044E-11D1-B3E9-00805F499D93

此段代码固定写法,照抄即可

2、

VALUE="com.bb.employment.webapp.action.JsperApplet.class">

此代码为关键所在,主要实现向打印机输出打印流工作

3、

VALUE="<%=request.getContextPath()%>/exam/lib/printer.jar">

打印支持jar包,名字自己起,需要手工制作,后面叙述怎么制作,页面内照抄即可,路径在webroot 下,具体自己定义。一般是自己所编写的模块下新建一个lib目录放置。

4、

NAME="REPORT_URL"

VALUE="<%=request.getContextPath()%>/ExamPermitPrintApply.html?oid=<%=o id%>">

此代码主要是获取输入的打印流,ExamPermitPrintApply.html(我们的项目中Action的扩展名是.html,可以是.do或者其他,具体视项目规定定义)代表控制器层的Action,并且把刚取到的oid传给它,传oid的作用是可以在Action中根据oid获取要打印的对象(记录)。五、c om.bb.employment.webapp.action.JsperApplet.class制作

新建一个名为JsperApplet.java 的Applet程序,路径自己放,一般放在实现打印的Action 所在的位置。我的路径是com.bb.employment.webapp.action.JsperApplet.java JsperApplet.java

package com.bb.employment.webapp.action;

import java.applet.Applet;

import https://www.360docs.net/doc/5f8210757.html,.URL;

import javax.swing.JOptionPane;

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

import net.sf.jasperreports.engine.JasperPrint;

import net.sf.jasperreports.engine.JasperPrintManager;

public class JsperApplet extends Applet {

private static final long serialVersionUID = 1L;

private URL url = null;

private String strUrl = null;

public void init() {

strUrl = getParameter("REPORT_URL");

if (strUrl != null) {

try {

url = new URL(getCodeBase(), strUrl);

} catch (Exception e) {

e.printStackTrace();

}

} else

JOptionPane.showMessageDialog(this, "Source URL not specified");

}

public void start() {

if (url != null) {

try {

Object obj = JRLoader.loadObject(url); // 发送对象请求,获得JasperPrint对象

JasperPrintManager.printReport((JasperPrint) obj, false); // 调用方法打印所获得的JasperPrint对象

} catch (Exception e) {

e.printStackTrace();

}

}

}

// Stop the applet

public void stop() {

}

// Destroy the applet

public void destroy() {

}

/*

* public void paint (Graphics g) { g.drawString("cc"+name+"dd" , 0, 100); }

*/

}

代码编写完之后就可以制作printer.jar的jar包了,方法如下

鼠标右键选中你刚才所建的JsperApplet.java文件,单击Export,将JsperApplet.java导出成一个Jar文件(具体导出方法不在鳌述),名字为printer.jar(名字可以自己定义,但要和前面一致),先将这个printer.jar放置在桌面。然后用压缩工具(WinRAR)打开(注意,不是解压)。

然后找到C:\Program Files\JasperSoft\iReport-2.0.5\lib\目录下的jasperreports-2.0.5.jar (路径就是你的iReport的安装路径)也用压缩工具打开,将jasperreports-2.0.5.jar包下的net,org包和default.jasperreports.properties文件Ctrl+C, 然后Ctrl+V到你刚刚打开的printer.jar下。然后将制作好的printer.jar文件复制到/exam/lib/目录下,在复制一份printer.jar到JDK安装路径C:\Java\jdk1.5.0_09\bin下进行数字签名操作。

签名步骤:打开msdos黑窗口,进入JDK的目录(cd C:\Java\jdk1.5.0_09\bin)

输入命令

keytool -genkey -keystore printer.keystore –alias printer

jarsigner -keystore printer.keystore printer.jar printer

keytool -export -keystore printer.keystore -alias printer -file printer.cer

三条命令完成之后你会看到C:\Java\jdk1.5.0_09\bin目录下生成printer.keystore,printer.cer文件,将这两个文件也复制到/exam/lib/目录下

六、E xamPermitPrintApply.html所代表的Action编写

public void print() {//注意:print()方法是void的,没有返回值

String relativePath = "/exam/exammanage/jasper/bjh02.jasper";

/*将做好的报表文件复制到你的项目中,路径自己定义,我的路径是

/exam/exammanage/jasper,我的报表文件是bjh02.jasper,最好将生成的bjh02.jrxml

文件也复制到此目录下,报表文件所在目录在你的iReport2.05的安装目录C:\Program

Files\JasperSoft\iReport-2.0.5*/

String absolutePath =

getRequest().getSession().getServletContext()

.getRealPath(relativePath);

String oid1 = getRequest().getParameter("oid");

String oid=oid1.substring(0, oid1.length()-1);

HashMap props = new HashMap();

JasperPrint jasperprint = null;

Connection conn = null;

try {

conn = this.getConnection();

String[] certid = StringUtils.split(oid, ",");

for (int i = 1; i <= certid.length; i++) {

props.put("oid" + i, new BigDecimal(certid[i - 1]));

}

jasperprint = JasperFillManager.fillReport(absolutePath, props, conn);//需要传入JDBC的Connection,获取方法自己想办法,我的获取方法在别的地方不一定好用

conn.close();

conn = null;

ServletOutputStream ouputStream =

getResponse().getOutputStream();

ObjectOutputStream oos = new ObjectOutputStream(ouputStream);

oos.writeObject(jasperprint);// 将JasperPrint对象写入对象输出流中

oos.flush();

oos.close();

oos = null;

ouputStream = null;

} catch (JRException e) {

e.printStackTrace();

} catch (IOException e) {

e.printStackTrace();

}catch (SQLException e) {

e.printStackTrace();

}

finally {

try{

if(conn!=null){

conn.close();

conn=null;

}

}catch (Exception e2){

e2.printStackTrace();

}

}

}

private Connection getConnection() {

BaseDBJdbc dbs = new BaseDBJdbc();

Connection conn = null;

try {

conn = dbs.getConnection();

} catch (Exception e) {

e.printStackTrace();

}

return conn;

}

为C:\Program Files\Java\jre1.6.0_02\lib\security目录下的java.policy文件添加

permission https://www.360docs.net/doc/5f8210757.html,ng.RuntimePermission "accessClassInPackage.sun.awt"; permission https://www.360docs.net/doc/5f8210757.html,ng.RuntimePermission

accessClassInPackage.sun.awt.windows";

到此为止,JAVA实现iReprot报表打印功能基本完成

ireport 5.1.0 教程之ireport快速入门文档

ireport5.1.0教程之ireport快速入门文档必要条件: iReport需要Sun Java2SDK1.4以上版本;为了能编译jasper文件就必须安装完整的java2(JDK),不光是(JRE)这个运行环境。如果你还想编译iReport 源代码,你还要安装Jakarta Ant version1.6以上版本。 硬件方面,类似于java的环境,iReport也占很多的RAM,所以它也需要只少256Mb的内存和至少20Mb的磁盘空间。 下载: 你可以到SourceForge网站上的企业主页上下载最新发布的iReport,可能有几种不同的分类: iReport-x.x.x.zip这是官方的zip格式的二进制文件。 iReport-x.x.x.tgz这是官方的tar gz格式的二进制文件。 iReport-x-x-x-src.zip这是官方的包含源代码的zip格式的二进制文件。 x.x.x表明了iReport的版本号。每一种都包含必须使用的第三方的库和程序及附加文件,例如模板和一些html格式的基础教程。 如果你想要更多最新版本的源程序,你可以直接地连接CVS库。但必须要有一个CVS客户端(像CVS,JCVS或者WinCVS)。 如果你有CVS那就执行如下的命令行: cvs-d:pserver:anonymous@https://www.360docs.net/doc/5f8210757.html,:/cvsroot/ireport

login(目前好象无法连接) and then all on the same line… cvs-z3 -d:pserver:anonymous@https://www.360docs.net/doc/5f8210757.html,:/cvsroot/ireport co iReport2 这样CVS客户端就可以将iReport的所有文件下载到本地,包括所有的文档,库和所有有用的编译iReport的文件。 就使用其他CVS的用户来说,SourceForge网站也自制了详细的解释用来检出工程。 编译iReport: 这些源中包含一个build.xml文件,它是被Jakarta Ant用来编译和启动iReport和或用来创建不同类型的工程。 下载iReport-x.x.x-src.zip,解压缩到你指定的目录,例如: c:\devel(or/usr/devel on unix system)。打开命令提示符或shell,进入你解压的目录和iReport目录:C:\devel\iReport-0.3.2>ant iReport 如果这个源完整的存在与目录中,它将被编译进类中iReport就能直接启动。

JasperReport初级教程(2.0.3)图文详解

如何调用Java代码,请查看另一篇文章: JasperReport初级教程(2.0.3)调用Java代码_图文详解_绝对原创 如需转载,请注明出处,http://www.川江号子.cn 。 另,本人有Word电子文档格式,如需要,请联系本人:asima127@gmai https://www.360docs.net/doc/5f8210757.html, 由于有些图片以前是放在巴巴变上的,现在巴巴变不提供外链了,如果你愿意支付一定的费用,请访问该文档的购买地址: 【https://www.360docs.net/doc/5f8210757.html,/auction/item_detail-0db2-03c1768339f 915aec75afd6f1f49426b.jhtml】 1下载iReport iReport是一个可视化的报表模板设计工具,使用此工具能方便地对报表进行设计。在iReport中已经包含了jasperreports在运行时需要的jar文件,在项目中的lib目录中包含Jasperreports-***.jar即可,其中***为版本号,比如2.0.3。 下载地址:https://www.360docs.net/doc/5f8210757.html,/project/showfiles.php?group_id= 64348,此文档编写时版本为2.0.3,如图:

点击download出现以下界面: 可以看到提供了多种下载包,其中: ?iReport-2.0.3-src.zip:为iReport的源代码 ?iReport-2.0.3.tar.gz:为.tar.gz格式,一般用于Linux、Unix等非wi ndows系统 ?iReport-2.0.3-windows.installer.exe:为exe格式,一般用于windo ws系统 ?iReport-2.0.3.zip:为zip格式,可以用于各类操作系统 本文使用window版本为例,因此下载iReport-2.0.3-windows.inst aller.exe即可。 2安装iReport 安装iReport需要先设置JDK环境,2.0.X版本要求JDK1.5环境(另参考文档)。 如果是windows系统,直接双击安装图标即可。 (如果是下载的ZIP文档,则将其解压到指定的目录,还需运行bin/startu p.bat)。

Java实现打印功能

Java实现打印功能 用java实现打印,java.awt中提供了一些打印的API,要实现打印,首先要获得打印对象,然后继承Printable实现接口方法print,以便打印机进行打印,最后用用Graphics2D直接输出直接输出。 下面代码实现了简单的打印功能: import java.awt.BasicStroke; import java.awt.Color; import https://www.360docs.net/doc/5f8210757.html,ponent; import java.awt.Font; import java.awt.Graphics; import java.awt.Graphics2D; import java.awt.Image; import java.awt.Toolkit; import java.awt.RenderingHints; import java.awt.font.FontRenderContext; import java.awt.font.LineBreakMeasurer; import java.awt.font.TextAttribute; import java.awt.font.TextLayout; import java.awt.geom.Point2D; import java.awt.image.BufferedImage; import java.awt.print.Book; import java.awt.print.PageFormat; import java.awt.print.Paper; import java.awt.print.Printable; import java.awt.print.PrinterException; import java.awt.print.PrinterJob; import java.text.AttributedString; import javax.swing.JApplet; public class PrintTest implements Printable{ /** * @param Graphic指明打印的图形环境 * @param PageFormat指明打印页格式(页面大小以点为计量单位,1点为1英才的1/72,1英寸为25.4毫米。A4纸大致为595×842点) * @param pageIndex指明页号 **/

jaspersoft+iReport+Designer+4.5.0教程

.前.言. .本教程所使用实例均来自jaspersoft iReport软件自带的Samples。在开始本教程之前,请先运行Sample 数据库,如下图所示,相关案例也可在相应的菜单中点击打开。软件安装,配置设置请见相关教程。 图1 1.简单报表查询 1.1新建报表 依次单击“文件/New…”,弹出窗口如图1.1所示: 图1. 1 选择”Blank A4”,单击”Open this Template”,如图1.2所示:

图1. 2 在“Report Name”输入“SimpleReport”,依次单击“下一步/完成”,得到一个新的report,如图1.3所示: 图1. 3 1.2设置数据集 单击数据库链接按钮,弹出”Report query”窗口,本文将使用系统自带的HSQLDB数据库(如图1.4所示),在弹出窗口中输入查询语句,如图1.5和1.6所示。 图1. 4 图1. 5

图1. 6 单击”OK”按钮完成数据集设置。 1.3 Report设计 ①设置Title 在主窗口的设计窗口开始设置。首先从“组件面板”拖动一个”Static Text”控件到设计窗口的 Title Band,并双击输入文字,如图1.7所示。 图1. 7 ②设置Detail 从左侧导航面板“Report Inspectpr”的“Fields”中拖动要显示的属性字段到设计窗口的Detail Band,如图1.8所示。

图1. 8 Detail Band中的字段在制成Report时将循环显示,而Column Header是列标题,只显示一行,本文不希望显示列标题,因此删除Column Header中的标签框。调整Detail中的Text Field位置和大小,如图1.9所示: 图1. 9 ③设置Page Rooter 从组建面板中拖动“Pager number”和“Total pages”到设计面板的Page Rooter内,选中设计面板中的“Pager number”控件,如图1.10所示。 图1. 10 此时可以查看该控件的属性,在属性面板中找到“Text Field Expression”属性,将其改为"Page "+$V{PAGE_NUMBER}+" of "。

JasperReport4.0.1使用手册

JasperReport4.0.1 用户手册

目录 1.介绍 (4) 2.准备工作 (4) 2.1环境要求 (4) 2.2下载 (5) 3.报表生命周期 (5) 4.报表结构 (5) 5.Report Datasource (6) 5.1 Database JDBC connection (6) 5.2 JavaBeans set datasource (9) 5.3 File CSV datasource (11) 5.4 Microsoft Excel(xls)data source (12) 6.报表元素(Report Elements) (12) 6.1 Static Texts (12) 6.2 Text Field (13) 6.3 Crosstab(交叉报表) (13) 6.3.1 基本设置 (13) 6.3.2 设置报表的语言 (15) 6.3.3 对Row Groups中的变量的操作 (16) 6.3.3 对Column Groups中的变量的操作 (17) 6.3.4 对Measures中的变量的操作 (17) 6.3.5 预览报表效果 (18) 6.4 List (18) 6.4.1 设置List引用的dataset,为List所引用的参数赋值 (18) 6.4.2 设置List中内容的扩展方向 (18) 6.4.3 设置List中内容的扩展个数 (19) 6.4.4 示例中的报表的设计以及运行效果如下图(截取部分) (19) 6.5 Table(表格) (20) 6.5.1 Table如何获得连接 (20) 6.5.2 如何向Table中的参数传值 (20) 6.5.3 如何删除或添加一列 (20) 6.6 Break(分页符) (20) 6.7 Chart(图表) (20) 6.8 Subreport (22)

JavaPrintService_Java打印API_用户手册_中文版

目录 第一章介绍 Java平台打印的历史 JDK 1.3 JDK 1.2 JDK 1.1 Java Print Service API能做什么 Java Print Service 构架 javax.print包 发现打印服务 指定打印数据格式 创建打印工作 javax.print.event包 应用程序如何使用JPS 一个基本的例子 第二章属性 属性的类别和值 属性角色 属性集 如何指定属性 标准属性 OrientationRequested Copies Media MediaSize MediaPrintableArea Destination SheetCollate Sides Fidelity 使用JPS属性 第三章指定文档类型 用户格式打印数据 预定义数据格式的MIME类型 文本数据 页面描述语言文档 图像数据 自适应打印数据 表示类 字符编码的重要性 服务格式打印数据 怎样使用DocFlavor 第四章打印及流化文档

比较StreamPrintService与PrintService 定位服务 发现打印服务 发现流打印服务 获得一个打印工作 创建DOC 注册事件 打印服务事件 打印工作事件 PrintJobAttributeListener PrintJobListener 提交打印工作 向打印机提交打印工作 向流提交打印工作 打印服务提供商 第五章打印及流化2D图像 使用打印工作打印或流化图像 打印2D图像 流化2D图像 使用服务格式数据 打印服务格式数据 流化服务格式打印数据 示例:PrintPS.java 示例:PrintGIFtoStream.java 示例:Print2DPrinterJob.java 示例:Print2DGraphics.java 示例:Print2DtoStream.java 示例:PrintGIF.java Java Print Service 词汇表

java+ireport应用 (1)

ireport制作报表的流程: 首先,我们用ireport设计报表的样式,通过编译生成.jasper文件,为java做准备。 其次,我们在java中定义report公共类,来解析.jasper文件。 最后,通过流输出到页面显示。 1.用ireport设计简单报表:在这里我们选用ireport3.0,因为3.0比较稳定。 1.1,首先,新建一个报表文件,如下图:有title、pageHeader、columnHeader......等等栏。 1.2,title栏是用来放置标题的;pageHeader栏是放副标题和日期等;columnHeader栏是放表头的;detail栏是放详细信息(向下遍历数据显示);summary栏是放置图和交叉报表的;左下角的文件结构有“参数”、“字段”和变量,参数是用来定义一些静态文本的,可以通过后台进行传值,字段是定义VO的属性,变量是用来参与运算的; 1.2.1首先我们来定义一个参数叫做title,选择参数--->"添加"----->parameter,如下图:

在弹出的对话框的参数名中输入title后点击确定,然后将title参数拖拽到title栏中,如下图: 在这里我们可以设置title的字体、大小和位置等。 1.2.2用同样的方法我们建立两个字段:username和password:

分别拖拽到detail栏中,并调整大小、位置和边界: 接下来我们可在对于的列上加上表头:点击工具栏的“T”静态文本,在columnHeader栏中画出: 以上一个简单的报表就画好了,我们点击工具栏的“执行报表”按钮,编译成.jasper文件。 1.3,接下来我们定义java类Reports.java:

java大作业编一个程序打印出公司月各员工工资

姓名:王镱澍 Java大作业 一、题目 白浪公司的雇员根据参数月份来确定工资,如果该月员工过生日,则公司会额外奖励100元。 雇员分为以下若干类: SalariedEmployee:拿固定工资的员工。 HourlyEmployee:按小时拿工资的员工。 SalesEmployee:销售人员,工资由月销售额和提成率决定。 BasePlusSalesEmployee:有固定底薪的销售人员,工资由底薪加上销售提成。 公司会给SalaryEmployee每月另外发放2000元加班费,给 BasePlusSalesEmployee发放1000元加班费。编一个java程序创建上述若干类,并实现确定月份以及该月不同员工的工作情况后打印出该公司该月各员工工资,公司总的工资支出情况。 二、程序功能说明 编一个java程序创建上述若干类,并实现确定该月不同员工的工作情况以及输入月份后打印出该公司该月各员工工资,公司总的工资支出情况。 三、类、属性、方法说明 程序中已给出详细解释在此只作简要说明: Employee:这是所有员工总的父类。 属性:员工的姓名和生日月份。 方法:getSalary(int month) 根据参数月份来确定工资,如果该月员工过生日,则公司会额外奖励100元。 SalariedEmployee:Employee的子类,拿固定工资的员工。 属性:月薪。 方法:每月工作超出160小时的部分按照倍工资发放。 HourlyEmployee:Employee的子类,按小时拿工资的员工。 属性:每小时的工资、每月工作的小时数。 SalesEmployee:Employee的子类,销售人员。 属性:月销售额、提成率。 方法:工资由月销售额和提成率决定。 BasePlusSalesEmployee:SalesEmployee的子类,有固定底薪的销售人员。 属性:底薪。 方法:工资由底薪加上销售提成部分。 四、程序代码 import .*; class MyException extends Exception {

iReport使用手册(简易配图基础版)

iReport 用户手册1.1什么是iReport? iReport是一个能够创建复杂报表的开源项目,并且它能调用JasperReports 库应用于任何一种java应用程序。本身是分布式的且由符合GNU通用公共许可的 百分之百纯java编写。 由于它丰富的图形界面,你能够很快的创建出任何一种你想要的报表。iReport能够让我们提高技术方面的信心,比如它能降低学习JasperReports的XML语法的难度,而且能够为熟练的技术人员节省大量的时间并能开发出非常精 细的报表。 2.1功能特点 以下将列出iRreport的一些比较突出的功能: ?百分之九十九支持JasperReports XML标签 ?所见即所得的报表编辑器,也就是说它具有创建矩形,线,椭圆,正文区域,标签,图表,子报表,条码等完善的工具图标供使用。 ?嵌入式编辑器带有灯泡提示代码规则 ?支持Unicode和非拉丁语言(俄文,中文,日文,韩文…) ?文档结构浏览器 ?完善的报表编译器和输出器 ?支持所有可以通过JDBC连接的数据库 ?支持所有有效的数据源 ?自动报表创建向导 ?支持子报表 ?源文件的备份 ?支持文档模版 ?支持TrueType字型 ?支持本地化

?可添加插件扩展功能 ?完全支持脚本 ?支持图表 ?标准对象库管理(页码…) ?支持拖拽 ?无限制的取消/重做 3.1下载地址 iReport-5.5.0-windows版下载链接: https://www.360docs.net/doc/5f8210757.html,/project/ireport/iReport/iReport-5.5.0/ iReport-5.5.0-windows-installer.exe 4.1安装流程 1.打开安装文件,点击Next 2.点击I Agree

打印java方法参数

打印Java方法参数 首先描述一下具体的需求就是,能不能不需要手动添加代码就能打印Java方法所有的参数,这有些时候在我们调试代码的时候有很重要的帮助。 按照这个需求,我们可以想一下我们大体需要一下什么信息,方法的名称,方法参数类型,方法参数的名字,方法参数的值。 如何实现不写代码就能够实现动态的打印这些信息呢,了解Java的这时候就都会想到动态代理。有了动态代理我们就可以不用写代码了,但是为了区分哪些方法需要打印,哪些方法不需要打印,我们这里还需要注解来辅助区分需要打印的方法。 如何获取需要打印的信息呢,这里我相信大家都会想到反射,但是反射这里有一个参数是拿不到的,哪个参数呢,方法参数的名字是拿不到的。这里我们采用的是asm的方式来获取方法参数的名字。 到这里功能已经描述清楚,需要用到的技术也描述清楚,接下来就是具体怎么实现了。 首先,我们设计了一个注解类如下: import https://www.360docs.net/doc/5f8210757.html,ng.annotation.ElementType; import https://www.360docs.net/doc/5f8210757.html,ng.annotation.Retention; import https://www.360docs.net/doc/5f8210757.html,ng.annotation.RetentionPolicy; import https://www.360docs.net/doc/5f8210757.html,ng.annotation.Target; @Target(ElementType.METHOD) @Retention(RetentionPolicy.RUNTIME) public@interface MethodLog { } 接下来就是我们设计的最后要打印的数据的一个简单的封装类,如下: public class MethodInfo { private int index;//参数的索引 private Object parameterType;//参数的类型 private String parameterName;//参数的名称 private Object parameterValue;//参数的值 public MethodInfo(){} public MethodInfo(int index, Object parameterType, String parameterName, Object parameterValue) { super(); this.index = index; this.parameterType = parameterType; this.parameterName = parameterName; this.parameterValue = parameterValue; } public int getIndex() { return index; } public void setIndex(int index) { this.index = index; }

ireport入门教程之参数(Parameters)

ireport入门教程之参数(Parameters) Parameters通常是用来在打印的时候从程序里传值到报表里。也就是说parameters通常的是起参数传递的作用。他们可以被用在一些特定的场合(比如应用中SQL查询的条件),如report中任何一个需要从外部传入的变量等(如一个Image对象所包括的char或报表title的字符串)。 和使用Fields一样,parameters也需要在创建的时候定义它的数据类型。parameters的数据类型是标准的java的Object。 在ireport中,Parameters的机制是允许用户通过应用程序传递参数致报表当中。在jasperreort中的某个对象中的expression可以通过下面的语法来访问一个当前ireport中存在的parameter: $P{parameter name}。

如果应用程序没有为报表中定义的parameter赋值,那么parameter将会取我们在定义它的时候设置的default value的值。parameters是一个Java Object,所以如果它的类型是Object类型,我们在其default value里写下面的表达式就是错误的: 0.123 你必须要创建一个Object,如: New Double(0.123) 这种写法就是正确的。 在查询中使用Parameters Parameters可以用来做SQL查询的条件参数的传递。如果你想根据部门编号(dept_id)得到客户的详细信息(设计的时候我们是不知道这个部门编号的具体值是多少的).此时我们可以这样组织查询语句: select*from employee where dept_id=$P{deptId} 此时SQL查询引擎将会采用PreparedStatement来处理传入的deptId值以此作为查询条件参数。 如果你想直接通过parameter值来作为SQL语句的一部分,那么你可以使用下面的特殊语法:$P!{parameter name}。这种写法允许你在查询时用parameter的值来替换parameter name。例如,如果我们有一个参数名为MyWhere其值为:where dept_id=D11,查询写法如下: Select*from employee$P!{MyWhere}

Java打印程序设计

Java打印程序设计 1 前言 在我们的实际工作中,经常需要实现打印功能。但由于历史原因,Java提供的打印功能一直都比较弱。实际上最初的jdk根本不支持打印,直到jdk1.1才引入了很轻量的打印支持。所以,在以前用Java/Applet/JSP/Servlet设计的程序中,较复杂的打印都是通过调用ActiveX/OCX控件或者VB/VC程序来实现的,非常麻烦。实际上,SUN公司也一直致力于Java打印功能的完善,而Java2平台则终于有了一个健壮的打印模式的开端,该打印模式与Java2D图形包充分结合成一体。更令人鼓舞的是,新发布的jdk1.4则提供了一套完整的"Java 打印服务 API" (Java Print Service API),它对已有的打印功能是积极的补充。利用它,我们可以实现大部分实际应用需求,包括打印文字、图形、文件及打印预览等等。本文将通过一个具体的程序实例来说明如何设计Java打印程序以实现这些功能,并对不同版本的实现方法进行分析比较,希望大家能从中获取一些有益的提示。 2 Java中的打印 2.1 Java的打印API Java的打印API主要存在于java.awt.print包中。而jdk1.4新增的类则主要存在于javax.print 包及其相应的子包javax.print.event和javax.print.attribute中。其中javax.print包中主要包含打印服务的相关类,而javax.print.event则包含打印事件的相关定义,javax.print.attribute则包括打印服务的可用属性列表等。 2.2 如何实现打印 要产生一个打印,至少需要考虑两条: 需要一个打印服务对象。这可通过三种方式实现:在jdk1.4之前的版本,必须要实现java.awt.print.Printable接口或通过Toolkit.getDefaultToolkit().getPrintJob来获取打印服务对象;在jdk1.4中则可以通过javax.print.PrintSerivceLookup来查找定位一个打印服务对象。 需要开始一个打印工作。这也有几种实现方法:在jdk1.4之前可以通过java.awt.print.PrintJob(jdk1.1提供的,现在已经很少用了)调用print或printAll方法开始打印工作;也可以通过java.awt.print.PrinterJob的printDialog显示打印对话框,然后通过print方法开始打印;在jdk1.4中则可以通过javax.print.ServiceUI的printDialog显示打印对话框,然后调用print方法开始一个打印工作。 2.3 打印机对话框 2.3.1 Printable的打印对话框 开始打印工作之前,可以通过PrinterJob.printDialog来显示一个打印对话框。它给用户一个机会以选择应该打印的页码范围,并可供用户改变打印设置。它是一个本地对话框。

ireport 5.1.0 入门教程之参数(Parameters)

ireport 5.1.0入门教程之参数(Parameters) Parameters通常是用来在打印的时候从程序里传值到报表里。也就是说parameters通常的是起参数传递的作用。他们可以被用在一些特定的场合(比如应用中SQL查询的条件),如report中任何一个需要从外部传入的变量等(如一个Image对象所包括的char或报表title的字符串)。 和使用Fields一样,parameters也需要在创建的时候定义它的数据类型。parameters的数据类型是标准的java的Object。 在ireport中,Parameters的机制是允许用户通过应用程序传递参数致报表当中。在jasperreort中的某个对象中的expression可以通过下面的语法来访问一个当前ireport中存在的parameter: $P{parameter name}。

如果应用程序没有为报表中定义的parameter赋值,那么parameter将会取我们在定义它的时候设置的default value的值。parameters是一个Java Object,所以如果它的类型是Object类型,我们在其default value里写下面的表达式就是错误的: 0.123 你必须要创建一个Object,如: New Double(0.123) 这种写法就是正确的。 在查询中使用Parameters Parameters可以用来做SQL查询的条件参数的传递。如果你想根据部门编号(dept_id)得到客户的详细信息(设计的时候我们是不知道这个部门编号的具体值是多少的).此时我们可以这样组织查询语句: select*from employee where dept_id=$P{deptId} 此时SQL查询引擎将会采用PreparedStatement来处理传入的deptId值以此作为查询条件参数。 如果你想直接通过parameter值来作为SQL语句的一部分,那么你可以使用下面的特殊语法:$P!{parameter name}。这种写法允许你在查询时用parameter的值来替换parameter name。例如,如果我们有一个参数名为MyWhere其值为:where dept_id=D11,查询写法如下: Select*from employee$P!{MyWhere}

CF卡使用手册_CN

Copyright 2006 ABB. All rights reserved. Task List

Modifications list

Contents 1概要 (4) 2功能描述 (4) 3操作步骤 (4) 4把CF盘安装到控制器 (9) 5通过打开和关闭电源测试CF盘 (10) 6用CF盘设置控制器的IP地址 (10)

1 概要 1. 简介. 该文档的目的是提供一个如何使用CF盘的快速指南。对于AC800M系列控制器,在没有备份电池的情况下,可以使用CF盘引导控制器并下装应用程序。对于重启项目这是一个省时的、易于维护的方法。 该特性在许多情况下都是有价值的,当系统失电而又无备份电池;或有电池但不会保持太长时间(电池快没电时);或在控制器并非连续运行的情况(白天运行,晚上断电休息);或是演示设备等。2. 硬件、软件需求 硬件: AC800M 控制器, Compact Flash Card (CF 盘) 软件: Compact CBM 4.1 或800xA4.1 以后版本 2 功能描述 组态AC800M控制器,将测试程序装入CF盘,用CF盘启动AC800M控制器。并演示如何手动保存ColdRetain 值。 3 操作步骤 1. 准备CF盘 下列盘卡已经在Feeder Factory经过了测试(大多数其他卡也应该可以使用) .Silicon System; SiliconDriveTM CF256MB (SSD-C25M-3012) .SimpleTech;CompactFlash Flash Storage 128MB(SLCF128J-F) .Transcend;CompactFlashTM 512MB Industrial (TS512MCF451) PM865不支持CF盘。 准备CF盘 1) 将CF盘插入读卡器;

Java打印最

Java打印最大的改变来自于J2SE的发布带来的Java打印服务API。这个第三代Java打印支持接口突破了先前提到的使用javax.print包的PrintService和DocPrintJob接口的局限性。因为新的API就是以前两种旧的打印机制定义的功能函数的一个父集,它是目前我们常用的方法并且是这篇文章的焦点。 更深入来说,以下的步骤包含了怎么使用这个新的Java打印服务API: 1.定义打印机,限制那些返回到提供你要实现功能的函数的列表。打印服务实现了PrintService接口. 2.通过调用接口中定义的createPrintJob()方法创建一个打印事件,作为DocPrintJob 的一个实例。 3.创建一个实现Doc接口的类来描述你想要打印的数据, 你也可以创建一个PrintRequestAttributeSet的实例来定义你想要的打印选项。 4.通过DocPrintJob接口定义的printv()方法来初始化打印,指定你先前创建的Doc,指定PrintRequestAttributeSet或者设为空值。 现在你可以检查每一步并且试着完成它们。 注意 在这篇文章里,我将交替使用打印机和打印服务,因为在大部分情况下,打印服务不亚于一台真实的打印机。一般的打印服务反映了理论上可以发送到不仅仅是打印机的的输出。举例来说,打印服务也许根本不能打印东西但是可以往磁盘上的文件写数据。换句话说,所有的打印机可以看成是特殊的打印服务,但是并不是所有打印服务和打印机有联系。就像你一般把你的文本送到打印机那里一样,我有时候使用更为简便的打印机这个名词来代替技术上更精确的打印服务。 定义打印服务 你可以使用在PrintServiceLookup类中定义的三种静态方法中的一种来定义。最简单的一种就是lookupDefaultPrintService(),正如它的名字一样,它返回一个你默认的打印机: PrintService service = PrintServiceLookup.lookupDefaultPrintService(); 虽然用这个办法很简单也很方便,用它来选择你的打印机意味着用户的打印机一直都支持你的程序所要精确传输的数据输出。实际上,你真正想要的是那种可以处理你想要的数据的类型并且可以支持你要的特征例如颜色或者两边打印。为了从列表中中返回你所要求的特殊功能支持的打印机,你可以使用剩下两个方法中的lookupPrintServices() 或者lookupMultiDocPrintServices()。

ireport图文教程(超详细)

1下载iReport iReport是一个可视化的报表模板设计工具,使用此工具能方便地对报表进行设计。在iReport中已经包含了jasperreports在运行时需要的jar文件,在项目中的lib目录中包含Jasperreports-***.jar 即可,其中***为版本号,比如2.0.3。 下载地址:https://www.360docs.net/doc/5f8210757.html,/project/showfiles.php?group_id=64348,此文档编写时版本为 2.0.3,如图: 点击download出现以下界面: 可以看到提供了多种下载包,其中: ?iReport-2.0.3-src.zip:为iReport的源代码 ?iReport-2.0.3.tar.gz:为.tar.gz格式,一般用于Linux、Unix等非windows系统 ?iReport-2.0.3-windows.installer.exe:为exe格式,一般用于windows系统 ?iReport-2.0.3.zip:为zip格式,可以用于各类操作系统 本文使用window版本为例,因此下载iReport-2.0.3-windows.installer.exe即可。 2安装iReport 安装iReport需要先设置JDK环境,2.0.X版本要求JDK1.5环境(另参考文档)。

如果是windows系统,直接双击安装图标即可。(如果是下载的ZI P文档,则将其解压到指定的目录,还需运行bin/startup.bat)。 如果是其他系统,比如Linux,Unix等,解压下载的安装文件(如下载的是tar.gz格式,使用tar xvfz iReport-2.0.3.tar.gz进行解压,如下载的zip格式,使用zip命令解压),然后运行bin/startu p.sh即可。 以下以在windows上安装为例: A.欢迎界面,点击“N ext >”继续 B.阅读license内容,点击“I A gree”继续

ireport 5.6教程之参数(Parameters)

ireport 5.6教程之参数(Parameters) Parameters通常是用来在打印的时候从程序里传值到报表里。也就是说parameters通常的是起参数传递的作用。他们可以被用在一些特定的场合(比如应用中SQL查询的条件),如report中任何一个需要从外部传入的变量等(如一个Image对象所包括的char或报表title的字符串)。 和使用Fields一样,parameters也需要在创建的时候定义它的数据类型。parameters的数据类型是标准的java的Object。 在ireport中,Parameters的机制是允许用户通过应用程序传递参数致报表当中。在jasperreort中的某个对象中的expression可以通过下面的语法来访问一个当前ireport中存在的parameter: $P{parameter name}。

如果应用程序没有为报表中定义的parameter赋值,那么parameter将会取我们在定义它的时候设置的default value的值。parameters是一个Java Object,所以如果它的类型是Object类型,我们在其default value里写下面的表达式就是错误的: 0.123 你必须要创建一个Object,如: New Double(0.123) 这种写法就是正确的。 在查询中使用Parameters Parameters可以用来做SQL查询的条件参数的传递。如果你想根据部门编号(dept_id)得到客户的详细信息(设计的时候我们是不知道这个部门编号的具体值是多少的).此时我们可以这样组织查询语句: select*from employee where dept_id=$P{deptId} 此时SQL查询引擎将会采用PreparedStatement来处理传入的deptId值以此作为查询条件参数。 如果你想直接通过parameter值来作为SQL语句的一部分,那么你可以使用下面的特殊语法:$P!{parameter name}。这种写法允许你在查询时用parameter的值来替换parameter name。例如,如果我们有一个参数名为MyWhere其值为:where dept_id=D11,查询写法如下: Select*from employee$P!{MyWhere}

利用iText包实现Java报表打印

利用iText包实现Java报表打印 摘要:结合报表制作的两种情形介绍了iText的应用方法。一种是由程序对象动态产生整 个报表文件的内容,另一种是在已存在的PDF报表文档中填写数据域以完成报表。给出了Java 实现报表打印的控制方法。关键词: Java报表;iText包;动态报表;填充型报表;报表打 印 在信息系统应用中,报表处理一直起着比较重要的作用。Java报表制作中最常使用的是 iText组件,它是一种生成PDF报表的Java组件。本文讨论两种形式的PDF报表处理,一种 是通过程序对象生成整个PDF报表文档,另一种是利用制作好的含报表的PDF文档模板,通 过在模板填写数据实现数据报表。1 通过编程绘制实现报表的生成对于内容动态变化的 表格,适合使用程序绘制办法进行生成处理。这类表格中数据项和数据均是动态存在的。1.1 使用iText编程生成含报表的PDF文档的步骤[1] (1)建立Document对象。Document是 PDF文件所有元素的容器。 Document document = new Document(); (2)建立一个与 Document对象关联的书写器(Writer)。通过书写器(Writer)对象可以将具体文档存盘成需要 的格式,PDFWriter可以将文档保存为PDF文件。 PDFWriter.getInstance(document, new FileOutputStream("my.PDF")); (3)打开文档。如:document.open(); (4) 向文档中添加内容。所有向文档添加的内容都是以对象为单位的,iText中用文本块(Chunk)、 短语(Phrase)和段落(Paragraph)处理文本。 document.add(new Paragraph("Hello World"));//添加一个段落值得注意的是文本中汉字的显示,默认的iText字体设 置不支持中文字体,需要下载远东字体包iTextAsian.jar,否则不能往PDF文档中输出中文 字体[2]。 (5)关闭文档。如:document.close();1.2 表格绘制要在PDF文件中创建 表格,iText提供了两个类——Table和PdfPTable。Table类用来实现简单表格, PdfPTable类则用来实现比较复杂的表格。本文主要讨论PdfPTable类的应用。 (1)创建 PdfPTable对象创建PdfPTable对象只需要指定列数,不用指定行数。通常生成的表格 默认以80%的比例显示在页面上。例如定义3列的表格,每列的宽度分别为15%、25%和60%, 语句如下:float[] widths = {15f, 25f, 60f}; PdfPTable table = new PdfPTable(widths); 用setWidthPercentage(float widthPercentage)方法可设置表格 的按百分比的宽度。而用setTotalWidth则可设置表格按像素计算的宽度。如果表格的内容 超过了300 px,表格的宽度会自动加长。用setLockedWidth(true)方法可锁定表格宽度。通 过表格对象的系列方法可设置表格的边界以及对齐、填充方式。 (2)添加单元格表格 创建完成以后,可通过addCell(Object object)方法插入单元格元素(PdfPCell)。其中, Object对象可以是PdfPCell、String、Phrase、Image,也可以是PdfPTable对象本身,即 在表格中嵌套一个表格。通过单元格的方法可设定单元格的列跨度、边框粗细、对齐方式、 填充间隙等。 (3)合并单元格为了实现某些特殊的表格形式,需要合并单元格。 PdfPCell类提供了setColspan(int colspan)方法用于合并横向单元格,参数colspan为合 并的单元格数。但要合并纵向单元格需要使用嵌套表格的方法。将某个子表加入单元格,且 安排单元格所占列数为子表中列数,则其行跨度也就是子表中的行数。由于实际编程时, 经常出现各类结构的嵌套情形,可以将产生某种结构的表格模块进行封装,编制成方法,通 过传递方法参数完成表格特定模块的绘制。例如,可以将生成一个整齐行列表格的代码 编写成方法。方法返回表格,填充的数据通过二维对象数组传递。代码如下:public static PdfPTable creatSubTable(Object x[][]){ PdfPTable t= new PdfPTable(x[0].length); t.getDefaultCell ().setHorizontalAlignment (Element.ALIGN_CENTER); for (int k=0;k<x.length;k++) { for (int j=0;j<x[0].length;j++) t.addCell(new Phrase(x[k][j].toString(),FontChinese)); } return t;}

相关文档
最新文档