WEB打印控件Lodop6.0简明教程(一)
 

第一节、关于教程

    Lodop已流行好多年,由于很容易上手,所以很少看到关于它的教程,一般开发者都是通过那几个著名例子
就开始Lodop征程了,也难怪,程序员总是喜欢从例子学习新东西,但是系统地理论学习总能少走弯路。因此
二者结合一下,本文尽量以举例解释为主进行系统讲解。

   学习本教程的一个最好辅助方法是同时打开Lodop的样例文件,并跟随教程的讲解模拟运行。

   由于本教程是入门教程,所以下面从最简单的例子开始入手。

第二节、最简单的例子

最简单的引用

id="LODOP" classid="clsid:2105C259-1E0C-4534-8141-A753534CB4CA" width=0 height=0>

上面这段超文本是一个WEB页面嵌入lodop最简单的引用代码,也就是在页面head内,加入一个object对象元素,元素的classid属性值是固定的,一个很长的唯一识别字符串,而id属性值是可以自定义的,大家习惯地把这个值设为大写字母LODOP,后面在使用控件功能时用它来代表控件。

   以后我们会知道,直接用id值来代表一个元素属于不规范的用法,甚至一些浏览器(例如FireFox)直接不认可,按照XHTML规范要求,用document.getElementById("LODOP")这种样式才是规范的,但这么长的字符串被频繁使用实在不方便,所以人们普遍想到把它赋值给一个变量来代替的办法,这就是为何在Lodop早期5.0版本的样例中统统在页面靠前的位置有如下语句的缘故:

   var LODOP=document.getElementById("LODOP");

注意这个语句所处的位置很重要,一定要在页面解析过程中就被执行,而且该变量被声明为本页的全局变量,全局变量简单理解就是在function外面被声明的变量,而且任何function内部不能再同名声明。

  这是最简单的引用方法,自然不是唯一方法,很多时候要根据情况进行变化,例如当需要控件内嵌到页面并显示设计界面时,那么object元素就不能在head内,而是在body内了,而且还要设置width和height属性值;再例如页面打印过程很少,就没必要声明一个全局变量来代替控件等等,总之lodop在这里就是一个普通object标签对象,适用所有javascript语法的调度。

 

最简单的调用过程

    以上是Lodop被调用的最简单过程,其中过程名myPreview是我随便起的,该过程被放在一个script标签内,这种过程是典型的javascript语言程序过程,我们知道javascript是二次走红的WEB语言,简称JS语言,而Lodop被形容为JS功能的标准扩展,所以学习Lodop最好能有点JS语言基础。当然没有基础也不用担心,后面的教程我会尽量把涉及到的关键JS语法讲解清楚。  

   以上代码中大写部分是Lodop的固定函数,当然用小写或大小写混合也是可以的,之所以本教程甚至Lodop的所有样例文件中都采用大写,主要目的是为了醒目的区分出固定函数和自定义函数。Lodop固定函数名有个特点,就是大多包含下划线"_",想想看,如果没有它,全部大写的这些函数名是多么的恐怖难懂!

   其实Lodop的函数并不多,其强大的功能是靠众多参数来实现的。这仨函数PRINT_INIT、ADD_PRINT_TEXT和PREVIEW相当常用,下面分别讲解:

PRINT_INIT

   PRINT_INIT的功能是用来初始化,所谓初始化就是把Lodop内部的东西清空一下,当然在第一次调用时其内部本来就是空的,没东西可清理,但如果myPreview这个过程被页面点击事件多次调用,清空操作就显然很有用了。事实上初始化并非仅做这点事,它更重要的作用是判断是否开始工作,因为有几种情况会造成lodop不理睬后面的调用语句,一是控件本身还没准备完毕,这种情况多发生在页面装载期间就开始打印时;二是上次打印事物还没完成或控件发生故障时,这种情况多发生在循环大批量执行打印时;这种时候初始化函数会返回一个表示失败的逻辑假,所以每次都判断该语句是否成功是我推荐的理想程序代码。

   此外PRINT_INIT的字符参数也非常重要,该参数设置的是打印任务名,其最明显的作用是在实际打印输出时,该名称作为打印任务池中识别任务来源的“文档名”。这个参数值更重要的作用是控件会据此把这个过程中的很多操作选项作为同类情况保存下来,以影响下一次的打印,也就是通常所说的“Lodop有记忆功能”。如果把这个值设为空,就像本例子一样,那么控件就丧失记忆功能,当然很多时候“丧失记忆”也是页面程序需要的一种功能。 不知道大家注意到没有,如果这里名称和别的名称重复了会是什么结果,要知道你的客户可能还会用到别的页面也在使用Lodop。你猜测对了,如果重名就会搞混了。这就是Lodop样例中的名称那么长的缘故,控件作者希望开发者养成起长名的习惯。

ADD_PRINT_TEXT

  这个函数更常用,它的功能是向控件加入一个纯文本的打印内容项,前四个参数是输出的位置和区域宽高,最后一个参数是内容,默认情况下内容超出区域会被截取,当然也可以用其它指令分页全部输出。其中内容参数支持用转义字符“\”控制的换行,例如:LODOP.ADD_PRINT_TEXT(1,2,100,40,"Hello,\nWorld!");

下面是不加换行加了换行的打印预览截图:



PREVIEW

  这个函数的功能是推出打印预览窗口,以上俩图就是执行了打印预览函数的截图。这个窗口可以用程序控制其显示样式和是否弹出在浏览器界面之外。如果是弹出显示,那么预览窗口关闭之后会返回一个数字,表示其中的打印按钮被点了几次。

  此外打印预览还有两个姊妹函数:PREVIEWAPREVIEWB 其中后一个比较常用。

  PREVIEWB是强制用页面程序控制的布局来打印预览,也就是把前面说的记忆功能临时放弃。


小结:本节把一个最简单例子解释的尽量详细,让读者从这个角度开始逐步认识lodop,该控件强大而复杂,入门容易,但要提高的空间很大,后续章节我会尽量抽出时间快点完成...

 

注:本教材主要参考发行包中的样例及其技术手册,相关下载地址如下:

http://www.mtsoftware.cn/download.html

 

 WEB打印控件Lodop6.0简明教程(二)

<<转到博文目录