zoukankan      html  css  js  c++  java
  • LODOP打印控件进行批量打印

    Lodop打印控件批量打印的方式:
    1.批量打印每页内容相同的:
    (1)批量打印相同内容的很多纸张,可以设置打印份数,把该内容打印出多份。
    2.批量打印每页不同内容的:
    (1)通过在一个任务中分页,循环添加页数,每页添加不同内容,一个任务中打印多页。
    (2)一个任务中一页,循环多个任务,每个任务添加不同内容。
    (3)多任务与多页相结合,既分页又分任务,循环多任务,每个任务中循环多页。

    使用建议:
    1.批量打印同样的内容,可用多份,需要多少份打印多少份。
    2.批量打印不同内容,页数很少,每页内容也很少,需要预览,可在一个任务中分多页。
    3.批量打印不同内容,页数很少,不需要预览,直接打印,可一个任务分页,也可一页分多任务,均可。
    4.批量打印大批量不同内容,内容多,页数很多,建议分页分任务,分组打印,提高打印性能

    打印过多页,不拆分任务,打印成百上千复杂页面,会导致需要等待一段时间,例如点语句后可能很久才出现预览界面。
    打印上千上万个任务,任务太多,对操作系统负担大,可酌情分页,分页分任务进行折中处理。

    简单来说,就是相同内容,可设份数。
    不同内容,可多任务,可任务中分页,可多任务+分页进行组合分组。

    批量多任务打印的时候,如果都是相同的模版,可以用同一个Lodop任务名,如果担心打印机队列里都是统一名称,无法区分,可用语句控制,为每个任务取不同的打印机队列名,方法可查看本博客的相关博文:LODOP循环多任务 同模版只设置不同队列任务名

    Lodop打印语句最基本结构介绍(什么是一个任务)
    Lodop中的一个任务,就是从PRINT_INIT(或PRINT_INITA)初始化到PRINT(或预览等),是一个任务。

    方法:
    设置打印份数:
    LODOP.SET_PRINT_COPIES(4);//设置打印三份
    LODOP.SET_PRINT_COPIES(document.getElementById('T6').value);//设置打印名为T6文本框里输入的值的份数。

    设置一个任务分多页,没页内容不同:
    初始化//任务开始
    for (设置循环)
    {
    分页语句
    根据循环添加不同打印项
    }
    打印(或预览)//任务结束

    设置多个任务,循环多任务:
    for (设置循环)
    {
    初始化//任务开始
    根据循环添加不同打印项
    打印(或预览)//任务结束
    }

    设置分页分任务,分组打印,
    for (设置循环)
    {
    初始化//任务开始
    for (设置循环)
    {
    分页语句
    根据循环添加不同打印项
    }
    打印(或预览)//任务结束
    }

    例如,如下四个方法代码,实现打印四张:
    第一个把相同的内容打印四份
    第二个一个任务打印四页
    第三个打印四个任务
    第四个,打印两个任务,每个任务两页,共打印四页。

    具体演示会代码:

    当中的console.log是由于分2页为一个任务,打印两个任务,需要确定数组下标是0,1,2,3,所以加了个console.log查看一下循环中每次i+j的值是否是否正确。

    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>WEB打印控件LODOP</title>
    <script language="javascript" src="LodopFuncs.js"></script>
    </head>
    <body><input type="text" id="T6" size="2" value="4" name="copies">
    <a href="javascript:prn1_preview()">预览打印多份一样的内容</a><br>
    <a href="javascript:prn1_preview2()">预览打印多页</a><br>
    <a href="javascript:prn1_preview3()">直接打印多任务</a><br>
    <a href="javascript:prn1_preview4()">直接打印分页分任务 分组打印</a>
    <script language="javascript" type="text/javascript">   
            var LODOP; //声明为全局变量 
        function prn1_preview() {//批量打印相同内容可以用份数
            LODOP=getLodop(); 
            LODOP.PRINT_INIT("");
            LODOP.SET_PRINT_PAGESIZE(1,300,500,""); 
            LODOP.SET_PRINT_COPIES(document.getElementById('T6').value);
            LODOP.ADD_PRINT_TEXT(75,6,100,20,"一个文本");
            //LODOP.PRINT_DESIGN();
            LODOP.PREVIEW();    
        };
        function prn1_preview2() {    //一个任务中循环多页,每页内容不同
             LODOP=getLodop();  
              var wenben=["一号文本","二号文本","三号文本","四号文本"];
             LODOP.PRINT_INIT("");//初始化在循环外
             LODOP.SET_PRINT_PAGESIZE(1,300,500,"");
             for (i=0;i<wenben.length;i++)
          {  
             LODOP.NewPage();
             LODOP.ADD_PRINT_TEXT(75,6,100,20,wenben[i]);
          }
            //LODOP.PRINT_DESIGN();
            LODOP.PREVIEW();
        };
        function prn1_preview3() {    //循环多个任务,每个任务内容不同
             LODOP=getLodop();  
             var wenben=["一号文本","二号文本","三号文本","四号文本"];
              for (i=0;i<wenben.length;i++)
          {  
            LODOP.PRINT_INIT("");//初始化在循环中
            LODOP.SET_PRINT_PAGESIZE(1,300,500,"");
            LODOP.ADD_PRINT_TEXT(75,6,100,20,wenben[i]);   
            LODOP.PRINT(); 
       }
        };
       function prn1_preview4() {    //循环多个任务,任务中循环页数,分页分任务
             LODOP=getLodop();  
             var wenben=["一号文本","二号文本","三号文本","四号文本"];
              for (i=0;i<4;i=i+2)
          {  
            LODOP.PRINT_INIT("");//初始化在外循环中
            LODOP.SET_PRINT_PAGESIZE(1,300,500,"");
                   for (j=0;j<2;j++)
                 {   
                 console.log(i+j);
                 LODOP.ADD_PRINT_TEXT(75,6,100,20,wenben[i+j]);
                 LODOP.NewPage();              
                 }  
            //LODOP.PRINT_DESIGN(); 
            LODOP.PRINT(); 
       }
        };
    </script> 
    </body>

     

    简单点描述,就是循环多页,在任务中循环页数;循环多任务,直接循环多任务。

    数据和页数过多,需要分页分任务,分组打印,提高性能。

    注意,批量打印建议用直接打印,如果用预览,lodop会弹出多次,c-lodop会提示窗口已打开。

  • 相关阅读:
    hdu 5387 Clock (模拟)
    CodeForces 300B Coach (并查集)
    hdu 3342 Legal or Not(拓扑排序)
    hdu 3853 LOOPS(概率DP)
    hdu 3076 ssworld VS DDD(概率dp)
    csu 1120 病毒(LICS 最长公共上升子序列)
    csu 1110 RMQ with Shifts (线段树单点更新)
    poj 1458 Common Subsequence(最大公共子序列)
    poj 2456 Aggressive cows (二分)
    HDU 1869 六度分离(floyd)
  • 原文地址:https://www.cnblogs.com/huaxie/p/10000767.html
Copyright © 2011-2022 走看看