使用jquery实现指定区域打印,使用jquery.PrintArea.js 插件。
用法:
$("div#printmain").printArea();
但还是会打印DIV后面的内容,这里可以使用CSS控制打印分页
<div style="page-break-after: always;"></div>
有时用CSS控制分页了但还是会连续打印页面,这里就可以用上PrintArea 插件中的属性参数。
PrintArea部分源码:
可以看出插件中定义的属性格式为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;">
页面定义好后,我们看看插件中是如何处理我们的页面的。
下面是生成html的代码
html+=docType() + "<html>" + getHead() + getBody(thisPage) + "</html>";
插件中都定义了相义的方法,未做任何修改,这里就不粘贴了。
思路分析:
需在将一个DIV中的内容分成多页,且一行不跨多页,就得在生成html 代码上下功夫了。
首先,找出DIV中的所有行,当公共表头加上这些行后高度达到一页,就需要分页了,这里就有可以一页中最后一行刚好跨了多页,将这一行保存下来,放到下一页。
每一页生成完成后都需要在HTML标签后面加上CSS分页标记,这样就打印机就会乖乖的分页。(脚本学堂 www.jb200.com 收集整理)
说明:
生成的预览页面一页就是一个HTML页面,它有对应的表头与DTD信息。
有人可能明明预览只有4页,而打印出来总会多一页,这时你需要检验一下你生成的页面中分页标记是不是在HTML标签之前。
分面标记一定要在HTML标签之后,这样可解决打印多打一页问题。
以上就是jQuery怎么打印指定区域Html页面并自动分页的方法,不尽完美,欢迎高手补充优化。