批量打印,同时打印多个页面,有两种思路:

第一种思路,将所有的页面内容加载到一个页面中,然后再打印。这种打印方式有几个弊端,页面的样式会丢失,页面太多同时加载到一个页面中,数据量太大,响应时间很长,消耗的资源过大,很可能导致浏览器崩溃,最终打印失败。针对这种打印方式的弊端,可以通过限制批量打印数量的方法来避免。但样式的问题,似乎找不到解决方案。

第二种思路,调用每个页面直接打印方法,逐个页面打印。这种打印方式的弊端就是,调用每个页面的打印方法都会弹出框,等待用户确认打印才行。

1>第一种思路

第一步:将所有页面通过iframe加载到一个页面中,每个页面一个iframe

第二部:抓取每个iframe中的内容,将其加载到一个新的窗口中,每个ifrmae中的内容在打印的时候都强制分页

第三部:调用新窗口的打印方法。

代码如下:

        $(function () {
//在iframe中显示需要打印的页面,设置iframe的高度为自适应高度
$("iframe").each(function () {
$(this).load(function () {
$(this).height($(this).contents()[0].body.scrollHeight);
});
});
}); //将所有iframe中的内容都加载到一个新的窗口中,然后调用新窗口的打印方法
function printAll() {
var win = window.open('about:blank');
var body = "";
$("iframe").each(function (i) {
var pageNextStr = '<div style="page-break-after: always;"></div>';
var pageNext = $(pageNextStr);
pageNext.append($(this).contents()[0].find("from")[0].innerHTML);
body += pageNext[0].outerHTML;
});
win.document.body.innerHTML += body;
win.print();
win.close();
}

  

程序员的基础教程:菜鸟程序员

web 批量打印的更多相关文章

  1. asp.net Lodop实现批量打印

    1.列表(前台) <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="w_stu ...

  2. LODOP批量打印多页模版进行维护

    批量打印的时候,可以循环多任务,也可以循环多页,很多的时候也可以分页分任务,分组打印.如果是一个任务里的多页相同的模版,一个任务中会有很多打印项,这些打印项在每页中的位置是相同的,如果要调整,调整结果 ...

  3. LODOP打印控件进行批量打印

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

  4. 利用lodop打印控件轻松实现批量打印 (转载http://www.thinkphp.cn/topic/13085.html)

    最近在做一个打印程序,要实现批量打印功能,在网上找了很多天,也在tp官网咨询大牛们,对大家的的提议我一一进行了研究,总结如下: 要实现批量打印可以有两个办法: 一是利用专业的报表程序,能实现十分复杂的 ...

  5. 一个由正则表达式引发的血案 vs2017使用rdlc实现批量打印 vs2017使用rdlc [asp.net core 源码分析] 01 - Session SignalR sql for xml path用法 MemCahe C# 操作Excel图形——绘制、读取、隐藏、删除图形 IOC,DIP,DI,IoC容器

    1. 血案由来 近期我在为Lazada卖家中心做一个自助注册的项目,其中的shop name校验规则较为复杂,要求:1. 英文字母大小写2. 数字3. 越南文4. 一些特殊字符,如“&”,“- ...

  6. web网页打印的方法(浏览器通用)

    Web打印组件jatoolsPrinter 应用web化,不论对开发商,还是对用户来说,实在是一种很经济的选择,因为基于 web的应用,客户端的规则很简单,容易学习,容易维护,容易发布.但对程序员来说 ...

  7. vue项目中使用Lodop实现批量打印html页面和pdf文件

    1.Lodop是什么? Lodop(标音:劳道谱,俗称:露肚皮)是专业WEB控件,用它既可裁剪输出页面内容,又可用程序代码直接实现复杂打印.控件功能强大,却简单易用,所有调用如同JavaScript扩 ...

  8. ArcGIS中国工具应用:固定比例尺固定纸张批量打印

    ArcGIS中国工具应用:固定比例尺固定纸张批量打印 下载地址:http://files.cnblogs.com/files/gisoracle/a3batchprint.zip 固定A3,比例尺1: ...

  9. web在线打印,打印阅览,打印维护,打印设计

    winform打印的方案比较多,实现也比较容易,而且效果也非常炫:但现在越来越多的系统是web系统,甚至是移动端.网上也有非常的web打印方案,但各式各样的问题非常多,比如js兼容性,稳定性等一直缠绕 ...

随机推荐

  1. RouterOS 5.16软路由安装图解教程

    说明:RouterOS是一种路由器操作系统,它可以安装到普通的个人电脑上面,替代硬件路由器 RouterOS版本:RouterOS 5.16 硬件要求: 1.支持多核CPU 2.内存最大支持到2G 3 ...

  2. 超酷的Prezi在线ppt制作网站

    prezi.com 你还在用office Power Point 制作PPT吗? 使用prezi.com制作ppt试试.http://prezi.com/explore/staff-picks/

  3. Zookeeper 介绍翻译

    源网址链接 https://zookeeper.apache.org/ Apache Zookeeper 开放源码的服务器,提供高可靠的分布式协调服务. Zookeeper是一个维护配置信息,命名服务 ...

  4. stdio.h头文件中申明的基本函数

    调用scanf函数时,需传入变量的地址作为参数,scanf函数会等待标准输入设备(键盘等)输入数据,并且将输入的数据赋值给地址对应的变量. #include<stdio.h> #inclu ...

  5. centos7.3 快速安装 mariadb(mysql)

    从最新版本的linux系统开始,默认的是 Mariadb而不是mysql! 使用系统自带的repos安装很简单: yum install mariadb mariadb-server systemct ...

  6. rhel7配置ELK过程

    参考网站:https://www.cnblogs.com/hongdada/p/7887455.html https://my.oschina.net/codingcloud/blog/1615013 ...

  7. leetcode412

    public class Solution { public IList<string> FizzBuzz(int n) { var list = new List<string&g ...

  8. J2SE 8的输入输出--缓冲

    FileChannel带缓冲 //1. read the point location FileChannel channelRead = FileChannel.open(Paths.get(&qu ...

  9. 如何给echarts图表添加下载图表成图片的功能

    先打开一个现成的图表效果图,注意图中圈出的地方,如图   打开源码找到option,如图   在option下添加toolbox,如图   在toolbox下添加feature,如图   在featu ...

  10. Delphi WebBrowser 无法调用当前浏览器的版本 --转

    出自:http://blog.csdn.net/wensibo/article/details/25971863 procedure TregedtIE.FormCreate(Sender: TObj ...