杰表技术论坛 's Archiver

admin 发表于 2018-1-2 10:15

【jcp使用手册】自动分页

在web打印中,我们经常需要打印一些长的表格(<table>),可能跨好几页,对于这种长表格,用浏览器打印,和jcp的预分页方式(即做若干div,每个div为一页),都不能理想地解决表格分页打印问题。

如果用浏览器的window.print方法打印,经常会出现在分页处断行,断线现象,如下:
[attach]964[/attach]

当然,现在也有print css,但各浏览器厂商对该标准支持程度不一样,在不同的浏览器上打印,可能样式有很大差异。

能不能采取前面所说的方法,将大表格分成多个<table>,然后,用前面所说的方法,把它们放在一个个div页上,再用jcp来打印?

如果是规则表格,比如行高一样,上述方法可行,只需要算出每页合适的行数就行了,但如果类似简历这种表格,有很多不规则的合并单元格,行高不一样,比如,工作经历一行,经历丰富的可以有好几页,刚毕业的可能是空白。这样,就无法知道,该在哪里分页了,如果再考虑有单元格上的段落文字,也需要分页的情况,那就更复杂了。

jcp针对上述问题,引入了自动分页功能,它可以很好地解决表格分页断线的问题,也可以解决行高不等表格的自动分页,另外,你也可以使用jcp有关分页的加强功能,比如,合并单元格表格分页、大单元格文字分页的问题,表头表尾保留,合计、本页小计等计算。

实际上,jcp的自动分页,不仅只针对<table>,对html的其他容器对象,比如,<div>,<p>,<ul>等也适用。

如果某个div页中的内容,需要自动分页,则只需要在该 div 上,设置样式类 breakable即可,如下所示:
[code]<script>  
   var myDoc = {  
    documents : document,   
    copyrights : '杰创软件拥有版权  www.jatools.com'   
   };  
   getJCP().print(myDoc);  
</script>  
  
<div id="page1" class="breakable"> 本页内容较多,有可能打印不下,请自动分页之,blablalbla...</div>  
<div id="page2" > 不需要自动分页</div>  
<div id="page3" class="breakable">请将我自动分页,blablalbla...</div>[/code]


没设置breakable样式类的page div,仍然按预分页方式打印,即如果有一页打印不下的部分,会被截去。

要自动分页,不需要在js代码中进行任何设置。

jcp总是检查 page div上的样式类,有则分之。

jcp的分页算法,总是尽可能地利用可打印区域,
可打印区域=打印纸张大小-边距-页眉高度-页脚高度

admin 发表于 2018-1-2 10:22

在线演示:[url=http://print.jatools.com/jcp/0.99/breaksimple.htm]http://print.jatools.com/jcp/0.99/breaksimple.htm[/url]

页: [1]

Powered by Discuz! Archiver 6.1.0  © 2001-2007 Comsenz Inc.