`
brzore
  • 浏览: 33160 次
  • 性别: Icon_minigender_1
  • 来自: 湖南
社区版块
存档分类
最新评论

jQuery打印Html页面自动分页

阅读更多
    最近项目中需要用到打印HTML页面,需要指定区域打印,使用jquery.PrintArea.js 插件

用法:

$("div#printmain").printArea();


但还是会打印DIV后面的内容,这里可以使用CSS控制打印分页

<div style="page-break-after: always;"></div>


有时用CSS控制分页了但还是会连续打印页面,这里就可以用上PrintArea 插件中的属性参数。


PrintArea部分源码:

 var modes = { iframe : "iframe", popup : "popup" };
 var defaults = { mode     : modes.iframe,
                     popHt    : 800,
                     popWd    : 800,
                     popX     : 200,
                     popY     : 200,
                     popTitle : '',
                     popClose : false ,
                     twoDiv   : '', //自已扩展的属性,为满足变态需求
                     pageTitle: ''};//自已扩展的属性,为满足变态需求



可以看出插件中定义的属性格式为JSON,下面介绍部分属性

modes定义了两个属性,指定popup时会打开新窗口,可以视为打印预览页面,默认为iframe。

@popClose | [boolean] | (false),true  打印完成后是否开闭预览页面,默认为false(不关闭)。

$("div#printmain").printArea({mode:"popup",popClose:true});

这样就可以指定DIV打印了。

下面说一下我新增两个属性的用途
twoDiv:
        需要打印的第二个DIV ,当然会是第二页,这个页面比较长,需要自动分页,并且表格中每行都不一样,有些行跨了多行,这里打印出来,一行可能会打印在两张纸上。

pageTitle:
        第二个DIV分成多页里,每一页的表头都需要一样,这个参数就是公用表头。

这两个参数都对应着页面中的DIV,如:
<div id="pageTitle" style="display: none;">

页面定义好后,我们看看插件中是如何处理我们的页面的。
 writeDoc.open();
 writeDoc.write(html); //打找一个窗口关写窗口中的HTML代码 
 writeDoc.close();

 printWindow.focus();
 printWindow.print();


下面是生成html的代码
 html+=docType() + "<html>" + getHead() + getBody(thisPage) + "</html>";

插件中都定义了相义的方法,我没有做任何修改,这里我就不粘贴了。


下面是我的思路:
       需在将一个DIV中的内容分成多页,且一行不跨多页,我们就得在生成html 代码上下功夫了。

       首先找出DIV中的所有行,当公共表头加上这些行后高度达到一页,就需要分页了,这里就有可以一页中最后一行刚好跨了多页,将这一行保存下来,放到下一页。

       每一页生成完成后都需要在HTML标签后面加上CSS分页标记,这样就打印机就会乖乖的分页。
     
       说明一下,生成的预览页面一页就是一个HTML页面,它有对应的表头与DTD信息。

       有人可能明明预览只有4页,而打印出来总会多一页,这时你需要检验一下你生成的页面中分页标记是不是在HTML标签之前。
       分面标记一定要在HTML标签之后,这样可解决打印多打一页问题。

PS:  
       下面我会传上我修改过后的JS插件,由于我项目周期的原因,代码中很多部分都是写死了,只是为了解决本次打印的问题。所在代码中写得很乱,希望大家将究着看
      
       同事也希望哪位能够再优化一下,使之通用。

       第一篇博客,大家将就着看。
10
0
分享到:
评论
6 楼 menglifeihua2015 2015-04-29  
亲测,不起作用。
其实有个简单办法,给要分页的地方加个page-break-after:always;样式,打印时就乖乖分页了。
5 楼 1870702720 2014-05-13  
大侠,你在这儿说的让人感觉很有道理,可是你怎么不贴出来一个例子呢?
4 楼 wangpingyj 2013-02-04  
兄台,有完成的吗,为什么看的不太懂明了呀,发一份吧,谢谢啦,764209825@qq.com
3 楼 brzore 2012-07-08  
502220545 写道
哥们 有完整的例子吗  若可以的话  能发一份吗 yaozhichao911@163.com 谢谢了


其实代码全都在那个JS里面,我也是项目中用到了再研究了一下,小弟不才啊!可以互相交流一下,相互学习!!!
2 楼 502220545 2012-07-05  
哥们 有完整的例子吗  若可以的话  能发一份吗 yaozhichao911@163.com 谢谢了
1 楼 andorjava 2012-06-08  
这个一定要顶 。。。。。。。。。。。

相关推荐

    jquery打印HTML表格自动分页

    "jquery打印HTML表格自动分页"这个主题是关于如何利用jQuery来实现在用户打印HTML表格时自动进行分页的功能,这样可以确保长表格在打印时不被裁剪,而是以多页的形式呈现。 首先,要实现这一功能,我们需要理解HTML...

    jQuery打印指定区域Html页面并自动分页

    在这种情况下,`jQuery.PrintArea.js`插件提供了一个解决方案,它允许我们指定要打印的区域,并且能够自动进行分页。这个插件特别适用于那些内容较多、需要跨多页打印的场景。 使用`jQuery.PrintArea.js`的基本步骤...

    jqprint可分页打印页面内容

    "jqPrint" 是一个基于jQuery的插件,它允许开发者方便地实现页面内容的分页打印功能,无需复杂的CSS调整或JavaScript编程。在本篇中,我们将深入探讨如何使用jqPrint实现这一目标,以及涉及到的相关技术。 首先,...

    采用JQuery实现的打印HTML表格自动按多少行分页,打印时分页

    为了解决这个问题,我们可以使用JQuery来实现HTML表格的自动分页功能,使得在打印时能够按照设定的行数进行分页。这里我们将详细探讨如何实现这一功能。 首先,JQuery是一个广泛使用的JavaScript库,它提供了一系列...

    HTML print打印(分页,统计,排版)

    * 基于jquery的打印分页插件 * 方法API: * loadDate data,model,shownum(数据源[数组],模板页面,每页显示数) data 建议最大数据量不要超过500 * loadTABLE 利用模版创建TABLE代码 * insertTABLE 插入数据 ...

    jQuery打印插件jqprint

    jQuery打印插件jqprint是一个非常实用的工具,它允许开发者为网页添加一键打印功能,无需复杂的JavaScript代码。这个插件基于流行的JavaScript库jQuery构建,旨在简化网页内容的打印流程,提高用户体验。 首先,...

    jQ导出PDF自动分页打印代码.zip

    "jQ导出PDF自动分页打印代码.zip" 提供的是一套基于jQuery和CSS特效的解决方案,旨在帮助开发者高效地完成这项任务。下面我们将详细探讨这个代码包中的关键知识点。 首先,jQuery是一个广泛使用的JavaScript库,它...

    基于jQuery+Canvas制作导出PDF自动分页打印特效源码.zip

    该资源是一个前端开发相关的压缩包,主要涉及到使用jQuery和Canvas技术来实现导出PDF并具有自动分页打印特效的功能。这个功能在Web应用中非常实用,例如在报表、发票或文档展示等场景下,能够方便用户将网页内容以...

    jQ导出PDF自动分页打印代码

    在IT行业中,将网页内容导出为PDF格式并实现自动分页打印是一项常见的需求,尤其在数据报告、文档分享和在线阅读场景下。"jQ导出PDF自动分页打印代码"提供了一种解决方案,利用jQuery和Canvas技术,将HTML文本转化...

    jQ导出PDF自动分页打印特效代码

    在IT行业中,将网页内容导出为PDF格式并实现自动分页打印是一项常见的需求,尤其在数据报告、文档分享和在线阅读场景下。"jQ导出PDF自动分页打印特效代码"是一个利用jQuery和Canvas技术来实现这一功能的解决方案。 ...

    高级jQuery自动补全插件

    **jQuery自动补全插件详解** 在Web开发中,用户界面的交互性和便捷性是提升用户体验的关键因素之一。其中,自动补全功能是一项常见的需求,它可以在用户输入时提供预测建议,大大加快输入速度,降低错误率。jQuery...

    jquer实例大全【清晰版】

    jquery仿外卖点餐购物车页面代码 jQuery仿微信支付密码输入框(修改版) jQuery分步步骤 jQuery各种验证码 jQuery购物车功能 jQuery基于百度地图API的地址输入插件 jQuery基于百度地图api做成的地区 jQuery简单JS...

    Jquery dataTable完整例子下载(取数据、分页、样式等)

    它提供了丰富的功能,包括数据检索、排序、过滤、分页和自定义样式,使得网页上的数据管理更加便捷高效。在与`Struts2`框架集成时,可以实现强大的后端数据处理与前端用户界面的完美结合。 **1. 数据获取与显示** `...

    html转pdf文件插件

    4. **分页功能**: 高级的HTML转PDF插件会支持自动分页,确保长内容能适当地分布在多个PDF页面上。分页算法需要考虑到内容的流动性和响应性,以保持页面的美观和可读性。 5. **文字大小调整**: 用户有时需要调整PDF...

    JQuery DataTable 插件 V2.0

    - **分页**:自动分页,用户可以配置每页显示的记录数。 - **扩展性**:丰富的插件系统,如Buttons、Responsive、FixedHeader等,可实现导出、打印、响应式布局等功能。 - **自定义**:通过自定义列、事件处理和回调...

    jquery.jqGrid-4.5.4

    1. **数据加载与分页**:jqGrid 支持服务器端和客户端两种分页方式,可以根据数据量选择合适的方法,有效提高页面性能。 2. **数据筛选**:用户可以通过内置的筛选工具对表格数据进行快速过滤,找到所需信息。 3. ...

    jquery dataTables组件

    总的来说,jQuery DataTables组件是网页开发中处理数据表格的强大工具,结合Eclipse开发环境和Bootstrap框架,可以快速构建出具有专业级功能的数据展示界面。通过不断学习和实践,你可以进一步发掘DataTables的潜力...

    jquery 插件DataTable 最新版本下载

    DataTable是一款非常流行的jQuery插件,专为HTML表格提供高级功能,如数据排序、过滤、分页以及自定义显示等。它极大地增强了网页中的表格交互性,使得用户能够更加便捷地管理和操作大量数据。在最新版本中,...

Global site tag (gtag.js) - Google Analytics