最近项目中使用lodop控件进行打印操作,由于之前也使用过所以并没有感觉有什么问题,不过在进行超文本打印分页的时候却发现连续出现了空白页,这是我很奇怪,于是第一反应就是给分页错误的超文本内容加上背景色,查看打印范围:
LODOP.ADD_PRINT_HTM("15mm", "5mm", "190mm", "263mm", '<style>*{background:#000}</style>'+escape2Html(data.fourthPage));
加入了<style>*{background:#000}</style>
预览结果:
可以看到超文本打印范围并没有超出打印区域,而且实际情况是连续出现了3张空白页,所以基本可以排除是由于超文本中空白空间太多而造成的分页错误。继续查看js代码,在同事的提醒下发现在这个分页语句前面,我还用了3个LODOP.NewPage()强制分页:
LODOP.ADD_PRINT_HTM("2mm", "0mm", "206mm", "100%", firstPageStyle+data.firstPage);
LODOP.NewPage();
LODOP.ADD_PRINT_HTM("2mm", left, "190mm", "297mm", data.secondPage);
LODOP.NewPage();
LODOP.ADD_PRINT_HTM("2mm", left, "190mm", "297mm", data.thirdPage);
LODOP.NewPage();
会不会是这个原因呢,对比以前的打印js代码我把LODOP.NewPage()改成了LODOP.NewPageA();重新预览打印发现这次分页终于正常了。
LODOP.NewPage()和LODOP.NewPageA()的区别,如果前面打印项自动分页不止一页,如果想要后面的页不重叠分页后的内容,应该用LODOP.NewPageA()。
LODOP.NewPage();强制分页,前面的自动分页会覆盖后面的页面,和后面页面内容同时输出。
LODOP.NewPageA();强制分页,前面的自动分页,后面的页面会在自动分页的后面添加新页面。
简单解释就是:LODOP.NewPage();强制分页,后面的内容会从第二页开始打印,如果第二页本来有内容会产生覆盖。LODOP.NewPageA();强制分页,后面的内容会从前面的内容打印完的地方另起一页打印。