Java web 打印方案---数飞OA打印方案总结

 

Web系统中,打印功能一直是个老大难问题,因此产生了很多第三方的控件,多数要收费,而且跟自己的系统结合有一定的麻烦。数飞OA系统采用J2EE技术,jsp打印问题同样存在于OA中。

在数飞OA中,打印方式有三种:一是不经过任何修改,直接调用javascript中的window.print()打印。二根据客户要求的报表格式,编写相应格式的html,装载数据打印,同样调用window.print()打印,只是对html的格式要求比较高。三是通过客户提供的word格式,通过xml配置文件与数据库的数据进行关联,自动装载数据到word中打印,这里是利用客户端的word进行打印。 

第一种几乎不用编写程序,最简单快捷,这里会遇到几个问题,只能打印表单内容,按钮不希望打印出来;页眉页脚不想打印出来;IEtitile不想打印出来。

解决办法:把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都有边框,tdtd的交接处就会有线条重叠,虽然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系统CRMERPHR等打印都可以处理。而且也不仅仅是java打印、jsp打印,用PHPASP等语言开发的WEB打印也一样适用。这几种打印方案在数飞OA中广泛应用,特别是第三种,有效解决了政务OA的红头文件,此文仅做思路的总结,具体实现方法有很多。

转载于:https://www.cnblogs.com/soarwell/archive/2009/04/01/1427052.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/264376.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux ftp ldap认证,vsftpd+ldap认证

一、环境系统 CentOS 6.4x64最小化安装IP 192.168.3.19二、安装ldap[roottest ~]# yum install openldap openldap-* -y[roottest ~]# yum install nscd nss-pam-ldapd nss-* pcre pcre-* -y配置ldap[roottest ~]# cd /etc/openldap/[roottest openldap]# cp /usr/sha…

es6-变量的解构赋值

从数组和对象中提取值&#xff0c;对变量进行赋值&#xff0c;这被称为解构 let [foo, [[bar], baz]] [1, [[2], 3]]; foo // 1 bar // 2 baz // 3let [ , , third] ["foo", "bar", "baz"]; third // "baz"let [x, , y] [1, 2, 3];…

浏览器的渲染原理

看到这个标题大家一定会想到这篇神文《How Browsers Work》&#xff0c;这篇文章把浏览器的很多细节讲得很细&#xff0c;而且也被翻译成了中文。为什么我还想写一篇呢&#xff1f;因为两个原因&#xff0c; 1&#xff09;这篇文章太长了&#xff0c;阅读成本太大&#xff0c;不…

AO 直接调用GeoProcessing 工具

Geoprocessing是ArcGIS的一个基础组成部分。无论你是一个新手抑或老资格的专家&#xff0c;geoprocessing都是你使用ArcGIS完成每天工作的一部分。它提供了数据分析、数据管理和数据转换等对于所用GIS用户都必须的工具&#xff0c;当然也包括ArcObjects开发者。GIS程序通常需要…

Linux环境变量PSI指什么,PSI 文件扩展名: 它是什么以及如何打开它?

了解 PSI 问题常见的 PSI 打开问题缺少 PrimalScript双击你的 PSI 文件会提示消息 “%%os%% 无法打开 PSI 文件”。 通常&#xff0c;%%os%% 中会出现这种情况&#xff0c;因为 PrimalScript 未安装在你的电脑上。 由于您的操作系统不知道如何处理此文件&#xff0c;因此无法通…

linux 修改文件时间

1、ls -l *.sh 2、touch -d "10/13/2013" *.sh 【我想把所以的.sh文件修改到三个月前&#xff08;2013年10月13&#xff09;的时间。】3、ls -l *.sh 参考文章 http://blog.itpub.net/29283412/viewspace-1070106/ 另外也可以单独修改时间或者月份&#xff0c;如下以…

datetime模块日期转换和列表sorted排序

import datetime dt 2019010103 # 日期 2019年1月1日3时 dts (datetime.datetime.strptime(dt, %Y%m%d%H) datetime.timedelta(days-1)).strftime(%Y%m%d%H) # 将dt向前或向后调整&#xff08;day表示天&#xff0c;hours表示表示小时&#xff0c;负数往前正数往后&#xf…

差距

现在看明白了自己的距离&#xff0c;该从何处下手&#xff1f; 时间是怎么争取出来的&#xff1f;转载于:https://www.cnblogs.com/rosion/archive/2009/04/11/1433450.html

linux 命令tf,Linux文件管理命令

本篇涉及命令&#xff1a;cat,tac,more,less,head,tail,file,stat,touch,which,whatis,whereis,ls,mkdir,rmdir,tree,cp,mv,rm文本文件查看类命令cat 查看文件内容(concatenate)cat命令用于查看一个或多个文本文件内容&#xff0c;可以将两个或两个以上的文件连接起来并显示&am…

Python实现——二元线性回归(最小二乘法)

2019/3/30二元线性回归——矩阵公式法_又名&#xff1a;对于python科学库的糟心尝试_ 二元线性回归严格意义上其实不过是换汤不换药&#xff0c;我对公式进行推导&#xff0c;其实也就是跟以前一样的求偏导并使之为零&#xff0c;并且最终公式的严格推导我大概也只能说是将将理…

CSharp设计模式读书笔记(18):中介者模式(学习难度:★★★☆☆,使用频率:★★☆☆☆)...

中介者模式(Mediator Pattern)&#xff1a;用一个中介对象&#xff08;中介者&#xff09;来封装一系列的对象交互&#xff0c;中介者使各对象不需要显式地相互引用&#xff0c;从而使其耦合松散&#xff0c;而且可以独立地改变它们之间的交互&#xff0c;中介者模式又称为调停…

AT命令解释

一、 AT命令解释&#xff1a;1、常用操作1.1 AT命令解释&#xff1a;检测Module与串口是否连通&#xff0c;能否接收AT命令&#xff1b;命令格式&#xff1a;AT<CR>命令返回&#xff1a;OK (与串口通信正常)&#xff08;无返回&#xff0c;与串口通信未连通&#xff09;测…

linux四种集群是什么,lvs四种集群特点及使用场景

一、 前言当一组服务器在高速的局域网或广域网中相互连接&#xff0c;其前端部署了一个负责负载调度的调度器(Director)的服务器系统。调度器能将网络请求无缝调度到真实服务器上(Real server)&#xff0c;客户访问集群系统提供的网络服务就像访问一台高性能、高可用的服务器一…

c#数据库訪问返回值类型为SqlDataReader时使用using时注意的问题

版权声明&#xff1a;本文为博主原创文章&#xff0c;未经博主同意不得转载。https://blog.csdn.net/u010512579/article/details/24011761 在封装通用 SQLSERVER 数据可訪问方法时&#xff0c;假设返回值类型为 SqlDataReader ,那么在创建连接字符串的时候。我们不能写成例如以…

BroadcastReceiver应用详解(转)

转自&#xff1a; http://blog.csdn.net/liuhe688/article/details/6955668 問渠那得清如許&#xff1f;為有源頭活水來。南宋.朱熹《觀書有感》 据说程序员是最爱学习的群体&#xff0c;IT男都知道&#xff0c;这个行业日新月异&#xff0c;必须不断地学习新知识&#xff0c;不…

深入浅出JSON

深入浅出JSON JSON定义 JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式&#xff0c;易于阅读和编写&#xff0c;同时也易于机器解析和生成。它基于ECMA262语言规范&#xff08;1999-12第三版&#xff09;中JavaScript编程语言的一个子集。 JSON采用与编程语言…

就linux学习的一点感受,学习linux的体会

学linux的驱动设计一&#xff1a;首先先装个虚拟机吧&#xff0c;我觉得这个比较好&#xff0c;有些人建议直接装在硬盘上(我想他们是觉得有点环境压力吧)&#xff0c;可我觉得对于没有linux基础的还是先装虚拟机比较好。二&#xff1a;记住一些常用的命令&#xff0c;这个是学…

自动绑定数据源

自动绑定数据源实现数据控件与原始数据的绑定是实现数据展示与编辑的基本前提。在常规的设计模式下实现数据绑定有两种方式&#xff1a;1&#xff09;第一种方式&#xff1a;在窗体上引用数据对象→逐个拖放控件→分别设置控件与字段的绑定关系。这无疑是个不厌其烦的重复过程&…

Java工具类——通过配置XML验证Map

Java工具类——通过配置XML验证Map 背景 在JavaWeb项目中&#xff0c;接收前端过来的参数时通常是使用我们的实体类进行接收的。但是呢&#xff0c;我们不能去决定已经搭建好的框架是怎么样的&#xff0c;在我接触的框架中有一种就是通过Map来接收前端过来的所有参数&#xff0…

c语言用指针两个字母交换,c语言指针基础之用指针交换两个数(代码实例)

用指针交换两个数&#xff1a;void swap(int *p,int *q) {int temp;temp *p;*p *q;*q temp;}int main(){int a 3, *p,c 5, *q;p &a; //把变量a的地址赋值给指针p&#xff0c;即p指向aq &c;swap(p,q);printf("a %d,c %d\n", a, c);return 0;}注意&am…