杰表技术论坛 's Archiver

admin 发表于 2014-10-22 08:47

jatoolsPrinter打印模板制作(转帖)

[url=http://www.cnblogs.com/sigal/p/3614598.html]jatoolsPrinter打印模板制作[/url][font=Verdana, Arial, Helvetica, sans-serif][size=14px][size=14px]制作一个模板首先要有个工具能编辑制作模板,然后将模板保存在数据库中,然后打印的时候将模板中的相应值填充,通过工具打印出来。这里通过CKEditor这个HTML在线编辑工具来制作相应的模板,然后将这个模板的内容保存在数据库入Mysql中, 在不同的环境中,给打印模板填充值打印出不同的素材出来,打印使用jatoolsPrinter这个工具。[/size][/size][/font]
[font=Verdana, Arial, Helvetica, sans-serif][size=14px][size=14px]  jatoolsPrinter工具的下载及使用参考官网[url=http://printfree.jatools.com/]http://printfree.jatools.com/[/url],这是一个免费的打印软件,而且解决了无水印问题,支持批量打印,是一个很强大的打印工具,但是仅支持IE内核的浏览器。[/size][/size][/font]
[font=Verdana, Arial, Helvetica, sans-serif][size=14px]
[/size][/font]
[font=Verdana, Arial, Helvetica, sans-serif][size=14px][size=14px]1 CKEditor制作打印模板[/size][/size][/font]
[font=Verdana, Arial, Helvetica, sans-serif][size=14px][size=14px]       这里不细讲CKEditor制作打印模板的过程,可以参考《CKEDITOR设置背景图片及宽高》一文,模板中需要动态改变的值,可以通过CKEditor隐藏域填充,打印的时候根据隐藏域的信息获取相应的值,修改模板内容,然后打印出来。[/size][/size][/font]
[font=Verdana, Arial, Helvetica, sans-serif][size=14px]
[/size][/font]
[font=Verdana, Arial, Helvetica, sans-serif][size=14px][size=14px]2 jatoolsPrinter 使用[/size][/size][/font]
[font=Verdana, Arial, Helvetica, sans-serif][size=14px][size=14px]       下载安装jatoolsPrinter后,在页面中引入object对象后就可以使用jatoolsPrinter了。[/size][/size][/font]
[code]<div id="page1"  class="only_for_print"></div>

<!-- 插入打印控件 -->

<OBJECT  ID="jatoolsPrinter" CLASSID="CLSID:B43D3361-D075-4BE2-87FE-057188254255"

codebase="jatoolsPrinter.cab#version=5,7,0,0"></OBJECT>



//对应的js方法

function doPrint(how) {

    var myDoc = {

        documents: document,

        copyrights: '杰创软件拥有版权  www.jatools.com'

    };

    if (how == '打印预览...')

         jatoolsPrinter.printPreview(myDoc); // 打印预览

    else if (how == '打印...')

         jatoolsPrinter.print(myDoc, true); // 打印前弹出打印设置对话框

    else

         jatoolsPrinter.print(myDoc, false); // 不弹出对话框打印

}[/code]

[font=Verdana, Arial, Helvetica, sans-serif][size=14px][size=14px]  这里div的id为page1,因为jatoolsPrinter打印的时候,可以设置打印的是哪个对象,如果是document,就会在document中将id为page的div元素打印出来,而且是按顺序打印,比如打印page1,page2,page3…,打印的内容就是这个div元素的innerHTML值。[/size][/size][/font]

[font=Verdana, Arial, Helvetica, sans-serif][size=14px][size=14px]3 打印隐藏的元素内容[/size][/size][/font]
[font=Verdana, Arial, Helvetica, sans-serif][size=14px][size=14px]  jatoolsPrinter 只打印html中可见的元素,如果要打印不可见的内容,可以通过一个隐藏的样式来操作。CKEditor编辑器编辑好模板后,获取content值(一个html片段),如下语句所示,page1元素加入了样式only_for_print,这个样式是display:none。然后在 jatoolsPrinter配置中,将这个样式显示出来,这样就能在打印的时候看到这些元素。[/size][/size][/font]

[code]// page1元素加入了样式only_for_print{display:none;}

var content = CKEDITOR.instances.editor1.getData();

Y.one("#page1").set("innerHTML",content); //使用YUI框架



//  jatoolsPrinter配置

var myDoc = {

     documents: document,

   classesReplacedWhenPrint: new Array('.only_for_print{display:block}'),

     copyrights: '杰创软件拥有版权  www.jatools.com'

};[/code]
[font=Verdana, Arial, Helvetica, sans-serif][size=14px][size=14px]4 替换打印模板中的动态值[/size][/size][/font]
[font=Verdana, Arial, Helvetica, sans-serif][size=14px][size=14px]  使用CKEditor编辑器将所有需要动态显示的值用隐藏域标识,比如有个日期,在隐藏域中名字为day,生成的源码就是[/size][/size][/font]
<input name="day" type="hidden" />

[font=Verdana, Arial, Helvetica, sans-serif][size=14px][size=14px]  获取到CKEditor的内容后,可以将这些内容当做DOM元素放到page1中,通过DOM操作在隐藏域的后面插入相应的值,然后在把隐藏域元素去掉。将处理过的结果赋给打印出来,打印的时候就能看到动态改变的值。[/size][/size][/font]
[size=11.8181819915771px][code]var inputHidden = $("#page1 input:hidden");
$.each(inputHidden, function(i,data){
       var fieldName = $(data).attr("name");
       $(data).after(parameter [fieldName]);
       $(data).remove();
}); [/code][/size]
[font=Verdana, Arial, Helvetica, sans-serif][size=14px][size=14px]  打印的页面效果如图:[/size][/size][/font]
[font=Verdana, Arial, Helvetica, sans-serif][size=14px]

[img]http://images.cnitblog.com/i/390718/201403/202050461623067.jpg[/img][/size][/font]

admin 发表于 2014-10-22 08:48

原文地址:
http://www.cnblogs.com/sigal/p/3614598.html

admin 发表于 2014-10-22 09:02

此文介绍,用CKEditor组件,来设计模板,当然是不错的,这是一种免费的,简洁的解决方案。当然,也可以使用jatoolsPrinter TOL功能更为强大,支持基于web可视化拖放设计,支持二维码,条形码,也支持复杂的表格组件,与后台数据库结合得更好。具体参照:

[url=http://print.jatools.com/tol.htm]http://print.jatools.com/tol.htm[/url]

页: [1]

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