ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

javascript – 打印多个页面打印按钮

2019-06-27 13:20:54  阅读:444  来源: 互联网

标签:jquery javascript coldfusion


我正在尝试使用打印按钮,单击时将打印多个pdf或文件.

是否可以打印全部按钮:

<button class="btn-u btn-u-orange" name="printall" id="printall" ><i class="icon-printer"></i> Print All</button>

但是在某种程度上让它在点击时打印所有pdf或页面.我一直试图用javascript做到这一点但不幸的是我失败了.

    function PrintAll() {
        var pages =  ["forms/82040PDFCreator.cfm", "forms/poa.cfm", "forms/Billofsalevehicle.cfm"];
        for (var i = 0; i < pages.length; i++) {
            var oWindow = window.open(pages[i], "print");
            oWindow.print();
            oWindow.close();
        }
    }

$("#printall").on("click",function(){
        PrintAll();
    });

当我选择打印时,它只会弹出第一个要打印的pdf而不是其他内容.任何有关这方面的帮助将不胜感激.

添加了coldfusion标签因为我正在调用填充pdfs的.cfms.

Iv尝试创建iframe:

<iframe src="forms/82040PDFCreator.cfm" style="width:400px; height:400px;" frameborder="0"></iframe>
<iframe src="forms/poa.cfm" style="width:400px; height:400px;" frameborder="0"></iframe>
<iframe src="forms/Billofsalevehicle.cfm" style="width:400px; height:400px;" frameborder="0"></iframe>
<iframe src="forms/IRF.cfm" style="width:400px; height:400px;" frameborder="0"></iframe>
<iframe src="forms/InsuranceAffidavit.cfm" style="width:400px; height:400px;" frameborder="0"></iframe>
<iframe src="forms/FeesBreakdown.cfm" style="width:400px; height:400px;" frameborder="0"></iframe>

他们不会都表现出来.它们都有效,但是一旦超过三个iframe,它们都不会显示出一些错误.我一直试图设置一个间隔加载它们希望它们不会超时但是不成功.如果我可以让它们全部显示,我将尝试使按钮以某种方式循环遍历iframe并打印它们.每次我点击刷新一些iframe工作一些不,不断改变哪些做,哪些不做.

尝试设置超时或间隔或某些内容以使它们全部显示:

$("#printall").on("click",function(){
  var iframes = document.getElementsByTagName("iframe");
  var i = 0;
  window.setInterval(function(){
      if(i < iframes.length){
        i++;
      }
  }, 3000);
    });

解决方法:

这适用于Chrome 64:

function PrintAll() {
  var pages =  ["forms/82040PDFCreator.cfm", "forms/poa.cfm", "forms/Billofsalevehicle.cfm"];

  var printNext = function(i) {
    i = i || 0;
    if (i >= pages.length) {
      return;
    }

    var wdw = window.open(pages[i], 'print');
    wdw.onload = function() {
      wdw.print();

      wdw.close();
      setTimeout(function() { 
        printNext(++i);
      }, 100);

    }
  };

  printNext();
}

对setTimeout的调用只是为了确保在打印下一个窗口之前窗口关闭.没有它,我会得到一些奇怪的行为.

标签:jquery,javascript,coldfusion
来源: https://codeday.me/bug/20190627/1305117.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有