最近项目中需要用到打印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插件,由于我项目周期的原因,代码中很多部分都是写死了,只是为了解决本次打印的问题。所在代码中写得很乱,希望大家将究着看
同事也希望哪位能够再优化一下,使之通用。
第一篇博客,大家将就着看。
分享到:
相关推荐
"jquery打印HTML表格自动分页"这个主题是关于如何利用jQuery来实现在用户打印HTML表格时自动进行分页的功能,这样可以确保长表格在打印时不被裁剪,而是以多页的形式呈现。 首先,要实现这一功能,我们需要理解HTML...
在这种情况下,`jQuery.PrintArea.js`插件提供了一个解决方案,它允许我们指定要打印的区域,并且能够自动进行分页。这个插件特别适用于那些内容较多、需要跨多页打印的场景。 使用`jQuery.PrintArea.js`的基本步骤...
"jqPrint" 是一个基于jQuery的插件,它允许开发者方便地实现页面内容的分页打印功能,无需复杂的CSS调整或JavaScript编程。在本篇中,我们将深入探讨如何使用jqPrint实现这一目标,以及涉及到的相关技术。 首先,...
为了解决这个问题,我们可以使用JQuery来实现HTML表格的自动分页功能,使得在打印时能够按照设定的行数进行分页。这里我们将详细探讨如何实现这一功能。 首先,JQuery是一个广泛使用的JavaScript库,它提供了一系列...
* 基于jquery的打印分页插件 * 方法API: * loadDate data,model,shownum(数据源[数组],模板页面,每页显示数) data 建议最大数据量不要超过500 * loadTABLE 利用模版创建TABLE代码 * insertTABLE 插入数据 ...
jQuery打印插件jqprint是一个非常实用的工具,它允许开发者为网页添加一键打印功能,无需复杂的JavaScript代码。这个插件基于流行的JavaScript库jQuery构建,旨在简化网页内容的打印流程,提高用户体验。 首先,...
"jQ导出PDF自动分页打印代码.zip" 提供的是一套基于jQuery和CSS特效的解决方案,旨在帮助开发者高效地完成这项任务。下面我们将详细探讨这个代码包中的关键知识点。 首先,jQuery是一个广泛使用的JavaScript库,它...
该资源是一个前端开发相关的压缩包,主要涉及到使用jQuery和Canvas技术来实现导出PDF并具有自动分页打印特效的功能。这个功能在Web应用中非常实用,例如在报表、发票或文档展示等场景下,能够方便用户将网页内容以...
在IT领域,尤其是在Web开发中,批量打印HTML页面是一项常见的需求。这主要涉及到网页的预览功能以及如何有效地分页,确保每个报告单都能独立占满一页,避免内容重叠或者断开。以下是对这个主题的详细阐述: 一、...
在IT行业中,将网页内容导出为PDF格式并实现自动分页打印是一项常见的需求,尤其在数据报告、文档分享和在线阅读场景下。"jQ导出PDF自动分页打印代码"提供了一种解决方案,利用jQuery和Canvas技术,将HTML文本转化...
在IT行业中,将网页内容导出为PDF格式并实现自动分页打印是一项常见的需求,尤其在数据报告、文档分享和在线阅读场景下。"jQ导出PDF自动分页打印特效代码"是一个利用jQuery和Canvas技术来实现这一功能的解决方案。 ...
**jQuery自动补全插件详解** 在Web开发中,用户界面的交互性和便捷性是提升用户体验的关键因素之一。其中,自动补全功能是一项常见的需求,它可以在用户输入时提供预测建议,大大加快输入速度,降低错误率。jQuery...
jquery仿外卖点餐购物车页面代码 jQuery仿微信支付密码输入框(修改版) jQuery分步步骤 jQuery各种验证码 jQuery购物车功能 jQuery基于百度地图API的地址输入插件 jQuery基于百度地图api做成的地区 jQuery简单JS...
它提供了丰富的功能,包括数据检索、排序、过滤、分页和自定义样式,使得网页上的数据管理更加便捷高效。在与`Struts2`框架集成时,可以实现强大的后端数据处理与前端用户界面的完美结合。 **1. 数据获取与显示** `...
4. **分页功能**: 高级的HTML转PDF插件会支持自动分页,确保长内容能适当地分布在多个PDF页面上。分页算法需要考虑到内容的流动性和响应性,以保持页面的美观和可读性。 5. **文字大小调整**: 用户有时需要调整PDF...
- **分页**:自动分页,用户可以配置每页显示的记录数。 - **扩展性**:丰富的插件系统,如Buttons、Responsive、FixedHeader等,可实现导出、打印、响应式布局等功能。 - **自定义**:通过自定义列、事件处理和回调...
DataTable是一款非常流行的jQuery插件,专为HTML表格提供高级功能,如数据排序、过滤、分页以及自定义显示等。它极大地增强了网页中的表格交互性,使得用户能够更加便捷地管理和操作大量数据。在最新版本中,...
1. **数据加载与分页**:jqGrid 支持服务器端和客户端两种分页方式,可以根据数据量选择合适的方法,有效提高页面性能。 2. **数据筛选**:用户可以通过内置的筛选工具对表格数据进行快速过滤,找到所需信息。 3. ...