免费OA分享地址,可以了解下:http:///blogger/post_show.asp?idWriter=0&Key=0&BlogID=3015439&PostID=25341549



Web 系统中,打印功能一直是个老大难问题,因此产生了很多第三方的控件,多数要收费,而且跟自己的系统结合有一定的麻烦。在数飞OA系统中 采用 J2EE 技术, jsp 打印问题同样存在于 OA 中。 <?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />


在数飞 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实施报告



日期:<?xml:namespace prefix = st1 ns = "urn:schemas-microsoft-com:office:smarttags" /> 2009 年1月1日



主  送: 市场部;办公室;财务部;人事部



拟稿单位领导签字: 同意办理 [admin,2009-01-01 00:57]






java 打印当前处理内存 java 打印文件内容_java 打印当前处理内存


核稿人签字: 确认收到 [admin,2009-01-01 02:57]






java 打印当前处理内存 java 打印文件内容_java 打印当前处理内存


 



完成此方案后,有几个特点:打印格式由现有的 word 格式提供,不需要再花时间开发调试程序;实施人员只需要花一点时间就完成标签和 XML 文件的设置;在报表中自动加入审批意见,领导印章等,直观跟现实一致;打印的格式和效果完全由 word 决定,而 word 强大并且被大众而熟悉,在打印的时候可以调整,所见即所得!

    小结:这几种方案不仅仅应用于 OA 的打印,任何 web 系统 CRM 、 ERP 、 HR 等打印都可以处理。而且也不仅仅是 java 打印、 jsp 打印,用 PHP 、 ASP 等语言开发的 WEB 打印也一样适用。这几种打印方案在数飞 OA 中广泛应用,特别是第三种,有效解决了政务 OA 的红头文件,此文仅做思路的总结,具体实现方法有很多。


转载于:https://blog.51cto.com/herhei3/360100