5. 特殊应用
(创建时间:2009年06月22日 19:44:00)
Jangogo : 
A. 打印指定的frame ,如果我们有多个iframe 或者frame ,我们想打印其中的某一个,怎么办?
    方法一:在要打印的frame中嵌入PAZU,用户在打印的时候,点击该frame的打印按钮
    方法二:打印前先用javascript 让要打印的frame获得焦点,再调用doPrint(false) 方法
        例子:
 
  1. window.frames['myframe'].focus();   
  2. pazu.doPrint(false);  
 

B.页面载入的时候立即打印或者获得打印机和纸张列表
      你可以在<body>的onload事件里面完成你要的工作
 

C.同一个页面里面,有些内容,如某个DIV或者按钮我们不想打印出来,但是屏幕上有需要显示,怎么办?
 
      在你的不打印的元素里面的样式表类class里面,添加一个p__的就可以了
 
  1. <!-- //设置某些页面元素不打印,只要在该元素的样式类class里面添加一个p__就可以了,看myDIV的class-->  
  2.  
  3. <div class="myDIVClass  p__" id="myDIV">这个DIV和"打印试试"按钮都不会被打印</div>  
  4. <input class="p__" name="Button1" type="button" value="打印试试!" onclick="demo();" style="width: 301px" />  
  5.  

          D.  连续循环打印?超多超大数据集的打印?
              这种应用有两种实现方式,要具体看数据的多少。
              1. 如果数据量不大(一个网页可以把所有要打印的数据显示出来,虽然网页要滚动才能显示,但是生成的HTML体积不大,而且用户不需要等待太长的时间来生成全部),如:一张出货单,需要分开多页打印出来
                  这种情况可以在网页要分页的地方 插入 一个css样式的分页,打印的时候就会自动分页打印了。我们的四方在线的凭证打印、账簿的打印、单据的打印都是采用这种方式。
                 具体实现例子如下:

 
  1. <!--以下三个div会自动分成三页打印-->  
  2. <div style="page-break-after:always"> 这是第一页的内容 </div>  
  3. <div style="page-break-after:always"> 这是第二页的内容 </div>  
  4. <div style=""> 这是第三页的内容 </div>  

              2. 如果数据量大,或者程序设计上不能做到一个网页把所有要打印的内容都容纳进来, 例如要打印10万个客户的账单,账单的数据在服务器的数据库中
                  这种需求实际上是通过循环多次载入页面实现的,你可以动态载入动态页面来实现,在我们的四方在线软件里面就有一个按月打印凭证的功能,就是这样的一种应用方式。
                 具体实现如下:
     

 
  1. //假设当前页面为:thispage.jsp       
  2. //利用javascript ,打印完成后自己载入下一页       
  3. //在页面中引入PAZU打印控件后,参考一下javascript       
  4. window.onload=function(){       
  5.    //先对页面参数进行设置       
  6.   pazu.TPrinter.header="";       
  7.    //其他设置,这里省略....       
  8.    //执行打印,打印的时候注意不能预览,也不能提示用户选择打印机,而是让pazu直接输出到打印机       
  9.   pazu.TPrinter.doPrint(false);       
  10.     //延迟一点时间,让页面重新载入下一页       
  11.   setTimer("printNextPage();",1000);       
  12. };       
  13.       
  14. function printNextPage(){       
  15.     window.location.href="thispage.jsp?pageid=NextPage";       
  16. }   

 


E. 如何让PAZU绑定多个许可授权码,例如我有内网和外网两种不同的访问用户,访问的网址不一样(应用站点其实是一个)

      这种应用有两种解决方式:

      1.利用 JavaScript 判断用户是通过那个网址访问的,用document.write() 来动态决定输入对应授权码

      2.在客户动态网页的时候,通过动态语言(如果ASP.net, PHP等)判断用户是通过那个网址访问应用的,在后台程序里面动态输出对应的授权码

       一般而言,第1种利用JS的方式比较简单而且和后台语言(平台)无关,我们下面就给出第1种解决方案的例程:

<!-- 原来PAZU引入页面是HTML,如下: -->
<object  classid="clsid:AF33188F-6656-4549-99A6-E394F0CE4EA4"     
         codebase=“http://www.4Fang.net/4ff/sc_setup.exe”    
         id="pazu"     
         name="pazu" >     
    <param  name="License"  value="你的许可码"/>   
 </object>  

我们改成用Javascript 输出:

<script type="text/javascript">
  if(window.location.href.toLowerCase().indexOf('内网IP')>-1){
     document.write('<object classid="clsid:AF33188F-6656-4549-99A6-E394F0CE4EA4" codebase="下载的URL" name="pazu" id="pazu"><param name="License" value="内网IP绑定的许可授权码"></object>');
  }else{
     document.write('<object classid="clsid:AF33188F-6656-4549-99A6-E394F0CE4EA4" codebase="下载的URL" name="pazu" id="pazu"><param name="License" value="外网IP绑定的许可授权码"></object>');  
  }
</script>
文档中心