LodopJS代码模版的加载和赋值

摘要:
Lodop模板有两种方法。一种是传统的JS语句,可以在JS方法中使用eval执行。另一个是文档模板,它是特殊格式的base64代码。这篇博客文章介绍了JS模板的加载和分配。有两种方法可以为JS模板赋值。1.在存储的模板中,值是一个变量,而不是字符串。这样,可以在加载模板之前为变量赋值,例如:LODOP.ADD_PRINT_TEXT;//这是模板中打印项的语句。在加载模板之前,为打印项指定一个值,例如:varNR=new value;评估;所以里面的NR是新的。

Lodop模版有两种方法,一种是传统的JS语句,可以用JS方法里的eval来执行,一种是文档式模版,是特殊格式的base64码,此篇博文介绍JS模版的加载和赋值。
两种模版都可以存入一下地方进行调用,比如数据库等。

JS模版的生成,可查看本博客的相关博文:Lodop的JS模版代码、文档式模版 生成加载赋值博文索引

关于该JS模版的加载,需要使用JS里的一个方法,eval()方法,该方法属于JS的范畴,并非lodop语句,有另一篇博文介绍这个JS方法:

前面那个Lodop的JS模版的生成,有几种方法,例如获取打印设计的返回值,返回的是带INIT初始化语句和打印项以及样式语句的代码。
该模版可当做字符串存入需要的地方,调用的时候,直接用eval()方法加载这个字符串。

JS模版赋值有两种
1.存的模版里,值本来就是变量,并非字符串,这种可以在加载模版前给变量赋一下值,例如:
LODOP.ADD_PRINT_TEXT(131,175,254,168,NR);//这是模版中该打印项的语句
加载模版前,给打印项赋值一下,例如:
var NR=新的值;
eval(整个模版的字符串);
这样里面的NR就是新的了。

2.存的模版里,值是字符串,原始字符串,并非变量,这种可以在加载模版后进行赋值修改值,例如:
LODOP.ADD_PRINT_TEXTA("neirong",131,175,254,168,"内容");//这是模版中该打印项的语句
加载模版后,给打印项赋值一下,例如:
eval(整个模版的字符串);
LODOP.SET_PRINT_STYLEA("neirong","CONTENT", 新的值);
注意:也可以根据序号等赋值,这里是根据打印项类名赋值,注意如果有同类名,会都被替换成新的值。

存是普通原始值,用content赋新值,测试代码:

<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>WEB打印控件LODOP</title>
<script language="javascript" src="LodopFuncs.js"></script>
</head>
<body>
<textarea rows="10" id="S1" cols="98" >LODOP.PRINT_INIT("");
LODOP.ADD_PRINT_TEXT(50,252,101,41,"标题");
LODOP.SET_PRINT_STYLEA(0,"FontName","楷体");
LODOP.SET_PRINT_STYLEA(0,"FontSize",17);
LODOP.ADD_PRINT_TEXTA("zhuti",74,401,100,20,"主题");
LODOP.SET_PRINT_STYLEA(0,"FontName","楷体");
LODOP.ADD_PRINT_LINE(107,112,102,493,0,5);
LODOP.ADD_PRINT_TEXTA("neirong",131,175,254,168,"内容");
LODOP.SET_PRINT_STYLEA(0,"FontSize",12);
</textarea><br>
<a href="javascript:prn1_preview()">加载原始JS模版</a><br>
请输入标题: <input type="text" id="B1" size="5"> <br>
请输入主题: <input type="text" id="Z1" size="5"><br>  
请输入内容: <input type="text" id="N1" size="50"><br>       
<a href="javascript:prn2_preview()">加载页面输入的新内容的该JS模版</a>
<script language="javascript" type="text/javascript">   
        var LODOP; //声明为全局变量 
    function prn1_preview(){    
        LODOP=getLodop(); 
        eval(document.getElementById('S1').value); 
        //LODOP.PRINT_DESIGN();
        LODOP.PREVIEW();
    };
    function prn2_preview(){    
        LODOP=getLodop(); 
        eval(document.getElementById('S1').value); 
        LODOP.SET_PRINT_STYLEA(1,"CONTENT", document.getElementById('B1').value); //根据序号赋值
        LODOP.SET_PRINT_STYLEA("zhuti","CONTENT", document.getElementById('Z1').value); //根据打印项类名赋值
        LODOP.SET_PRINT_STYLEA("neirong","CONTENT", document.getElementById('N1').value); //根据打印项类名赋值
        LODOP.PREVIEW();
        //注意,如果类名有重复的,赋值时所有相同类名的打印项的值都会被替换
    };
</script> 
</body>

图示:

LodopJS代码模版的加载和赋值第1张

存的是变量的模版,测试代码:

<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>WEB打印控件LODOP</title>
<script language="javascript" src="LodopFuncs.js"></script>
</head>
<body>
<textarea rows="10" id="S1" cols="98" >
LODOP.PRINT_INIT("");
LODOP.ADD_PRINT_TEXT(50,252,101,41,BT);
LODOP.SET_PRINT_STYLEA(0,"FontName","楷体");
LODOP.SET_PRINT_STYLEA(0,"FontSize",17);
LODOP.ADD_PRINT_TEXTA("zhuti",74,401,100,20,ZT);
LODOP.SET_PRINT_STYLEA(0,"FontName","楷体");
LODOP.ADD_PRINT_LINE(107,112,102,493,0,5);
LODOP.ADD_PRINT_TEXTA("neirong",131,175,254,168,NR);
LODOP.SET_PRINT_STYLEA(0,"FontSize",12);
</textarea><br>
请输入标题: <input type="text" id="B1" size="5"> <br>
请输入主题: <input type="text" id="Z1" size="5"><br>  
请输入内容: <input type="text" id="N1" size="50"><br> 
<a href="javascript:prn1_preview()">加载直接变量赋值后内容</a>
<script language="javascript" type="text/javascript">   
        var LODOP; //声明为全局变量 
    function prn1_preview(){    
        LODOP=getLodop(); 
        var BT=document.getElementById('B1').value;
        var ZT=document.getElementById('Z1').value;
        var NR=document.getElementById('N1').value;
        eval(document.getElementById('S1').value); 
        LODOP.PREVIEW();
    };
</script> 
</body>

图示:

LodopJS代码模版的加载和赋值第2张

两者对比图:

LodopJS代码模版的加载和赋值第3张

注意,一个是在加打印项前赋值,一个是在加打印项后赋值。

免责声明:文章转载自《LodopJS代码模版的加载和赋值》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇IDEA运行报错: Maven编译错误:不再支持源选项 5。请使用 6 或更高版本WordPress 开源文章采集插件 胖鼠采集下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

IE浏览器没有加载CSS或js文件的秘密及解决办法

其实是两处资料拼成这一篇博文的,因为在开发过程中遇到,有的文章只是说明原因,而没有给出解决方案,所以再次给出解释和解决方法,以供参考,如果有好的解决方法,也请分享下! --------------------------------------------------------------写在前面的话 [IE浏览器没有加载CSS或js文件的秘密] 如果有...

js之预解析

一、所谓的预解析就是:在当前作用域中,JavaScript代码执行之前,浏览器首先会默认的把所有带var和function声明的变量进行提前的声明或者定义。 1)var声明的变量在预解析的时候只是提前的声明, 2)function声明的函数在预解析的时候会提前声明并且会同时定义。 二、预解析只发生在当前的作用域下 程序最开始的时候,只对window下的...

JS调用Delphi编写的OCX控件

原文:http://www.mamicode.com/info-detail-471283.html 一、使用Delphi XE2编写OCX控件   生成OCX工程:   1、File-New-Other,在New Items对话框中选择Delphi Projects-ActiveX-ActiveX Library   2、File-New-Ot...

js 二分查找法之每日一更

<!DOCTYPE html> <html> <head> <meta http-equiv="content-type" content="text/html"/> <meta name="keywords" content="二分查找算法" />...

js解析Json字符串的方法

要把一个xml字符串转(“1,2,3,4,5,6,7,8,1,2”)换成数组的形式,每个值都应该是number类型的,想当然的就用了split方法,结果。。。问题来了,服务器要求数组的值是数字,而split是字符方法,所产生的数组也是字符串,麻烦来了。。这么大的数据量总不能一个一个的for循环parseInt吧,想想就头痛! 天无绝人之路,原来js这...

js AES对称加密 16进制和base64格式

<!doctype html> <html> <head> <meta charset="utf-8"> <title>aesCbc</title> <script type="text/javascript" src="http://t.zoukankan.com/crypt...