## 设计思路 某些打印库通过将页面DOM元素克隆一份,插入到一个空白页的iframe中,同时将打印相关的style样式也复制过去,以此来消除当前页css对打印的干扰。然后再调用浏览器的打印功能打印iframe中的内容。这种方式如果要精确打印,则需要对待打印的DOM元素的布局、位置、大小等进行提前换算,并通过css进行分页控制。 NPrint同样使用iframe来消除干扰,并最终在iframe中创建DOM元素来进行打印。但隐藏了DOM元素生成的各种细节,仅提供简单易用的javascript API用于界面的绘制。在最终调用文档预览或打印方法之前,浏览器并未开始加载资源生成DOM。 一份打印文档的结构如下:
第1页
第2页
Document文档中,可以添加多个Page页面,每个Page页面默认为1行1列的Grid网格布局(注意不是3行3列,上图所示的单元格仅用于表示Page页面中添加的内容的停靠位置)。 文字和图片内容可以灵活的放置在页面中的任意位置,所有的长度、大小数字均以毫米(mm)为单位,NPrint将自动根据当前屏幕的DPI进行换算,转换为像素(px)进行展现。