Dav*_*ton 5 javascript coldfusion jquery
我正在尝试创建一个打印按钮,单击该按钮即可打印多个 pdf 或文件。
是否可以有一个打印全部按钮:
<button class="btn-u btn-u-orange" name="printall" id="printall" ><i class="icon-printer"></i> Print All</button>
Run Code Online (Sandbox Code Playgroud)
但随后以某种方式让它在单击时打印所有 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();
});
Run Code Online (Sandbox Code Playgroud)
当我选择打印时,它只弹出第一个要打印的 pdf 文件,而没有其他内容。任何对此的帮助将不胜感激。
添加了 Coldfusion 标签,因为我正在调用填充 pdf 的 .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>
Run Code Online (Sandbox Code Playgroud)
但它们不会全部显示出来。它们都可以工作,但一旦 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);
});
Run Code Online (Sandbox Code Playgroud)
这在 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();
}
Run Code Online (Sandbox Code Playgroud)
调用setTimeout只是为了确保窗口在打印下一个窗口之前关闭。没有它,我就会出现一些奇怪的行为。