免费OA分享地址,可以了解下:http://blog.tianya.cn/blogger/post_show.asp?idWriter=0&Key=0&BlogID=3015439&PostID=25341549
Web
系统中,打印功能一直是个老大难问题,因此产生了很多第三方的控件,多数要收费,而且跟自己的系统结合有一定的麻烦。在数飞OA系统中
采用
J2EE
技术,
jsp
打印问题同样存在于
OA
中。
在数飞
OA
中打印方式有三种:一是不经过任何修改,直接调用
javascript
中的
window.print()
打印。二根据客户要求的报表格式,编写相应格式的
html
,装载数据打印,同样调用
window.print()
打印,只是对
html
的格式要求比较高。三是通过客户提供的
word
格式,通过
xml
配置文件与数据库的数据进行关联,自动装载数据到
word
中打印,这里是利用客户端的
word
进行打印。
第一种几乎不用编写程序,最简单快捷,这里会遇到几个问题,只能打印表单内容,按钮不希望打印出来;页眉页脚不想打印出来;
IE
的
titile
不想打印出来。
解决办法:把
button
放在一个
table
或者
div
里,打印的时候隐藏,完成后显示就可以。数飞
OA
系统中的
javascript
打印代码如下:
function Print() {
var tit = document.title;
document.title = "";
table1.style.display = "none";
window.print();
document.title = tit;
table1.style.display = "";
}
不过只能起到打印的目的,打印的效果一般比较土。不管怎么说,可以最快的让系统的大部分模块都有打印的功能。
第二种方式必须根据每个报表的格式进行定制html和java程序开发,会花比较多的时间。要注意的是对html中table的样式控制,在IE中浏览看起来很细的边框,打印出来有些线条会比较粗,有些线条又会比较细,阴阳怪气的很难看。
在
table
中直接用bordercolor会让线条显得很粗,用bordercolorlight,bordercolordark配合使用可以显示出秀气的线条。
〈table border="1" bordercolorlight="red"
bordercolordark="#FFFFFF" cellpadding="3" cellspacing="0"〉
〈tr〉
〈td〉
姓名
〈/td〉〈td〉
所属部门
〈/td〉
〈/tr〉
〈tr〉
〈td〉
陈
〈/td〉〈td〉
技术部
〈/td〉
〈/tr〉
〈/table〉
比如以上代码,在
IE
中看起来线条一样大小,还是比较秀气。不要高兴的太早,打印出来的效果不象在
IE
中看到的那样,边框虽细,内线却很粗!原因是每个
td
都有边框,
td
与
td
的交接处就会有线条重叠,虽然
IE
看起来没有,可是打印的时候就会显示出来。
这个问题的解决办法是控制每一个
td
的样式,对重叠的地方进行
border-bottom:1px
之类的控制。
这个方案比较消耗精力,而且打印的时候很难控制分页,更不能随时按照客户的需要调整字体边框颜色等。
第三种方案利用
word
强大的排版、打印功能,把排版和打印的需求扔到
word
中,
OA
软件要做的仅仅是让数据导到
word
中去。
JAVA
读取
WORD
模板,通过
XML
读取相关的数据库数据,自动转载数据到
WORD
模板中,最终展现给客户打印的是
WORD
。
通常,客户的报表都有
word
格式,或政务
OA
中的红头文件,或院校
OA
中的奖学金格式,大家习惯用
word
制定。在数飞
OA
中,客户提供的
word
格式中,制定标签,并且通过
XML
配置文件,把标签跟数据库的内容结合,达到自动装载数据又能保持原有
word
模板格式的效果。
发文审批单
标 题:
[SZGW_FWXX2-XXBT]
|
日期:
[SZGW_FWXX2-XXRQ]
|
主 送:
[SZGW_FWXX2-XXZS]
|
拟稿单位领导签字盖章:
[QZ-SZGW-NGDWLD]
|
核稿人签字:
[QZ-SZGW-NGR]
|
上面发文审批单是政府单位在使用时候,交到
OA
中,由实施人员加入
[SZGW_FWXX2-XXBT]
等标签。并且相应的配置XML文件:
〈
block name="GW" table="SZGW_FWXX2" cond="XXID="
〉
〈
tag name="[SZGW_FWXX2-XXBT]" field="XXBT" mutil="false" desc="
标题
"/
〉
〈
tag name="[SZGW_FWXX2-XXRQ]" field="XXRQ" mutil="false" desc="
日期
"/
〉
〈
/block
〉
〈
block name="QZ"
〉
〈
tag name="[QZ-SZGW-NGDWLD]" step="
拟稿单位领导
"/
〉
〈
tag name="[QZ-SZGW-NGR]" step="
核稿人
"/
〉
〈
/block
〉
至此完成打印单的设置,在需要打印的时候,系统自动生成
word
格式的打印单:
发文审批单
标 题:
关于数飞OA实施报告
|
日期:
2009
年1月1日
|
主 送:
市场部;办公室;财务部;人事部
|
拟稿单位领导签字:
同意办理
[admin,2009-01-01 00:57]
|
核稿人签字:
确认收到
[admin,2009-01-01 02:57]
|
完成此方案后,有几个特点:打印格式由现有的
word
格式提供,不需要再花时间开发调试程序;实施人员只需要花一点时间就完成标签和
XML
文件的设置;在报表中自动加入审批意见,领导印章等,直观跟现实一致;打印的格式和效果完全由
word
决定,而
word
强大并且被大众而熟悉,在打印的时候可以调整,所见即所得!
小结:这几种方案不仅仅应用于
OA
的打印,任何
web
系统
CRM
、
ERP
、
HR
等打印都可以处理。而且也不仅仅是
java
打印、
jsp
打印,用
PHP
、
ASP
等语言开发的
WEB
打印也一样适用。这几种打印方案在数飞
OA
中广泛应用,特别是第三种,有效解决了政务
OA
的红头文件,此文仅做思路的总结,具体实现方法有很多。