网页打印插件Lodop1.0完整教程(一)(2008-08-16 15:54:26)
一、概述
网页插件Lodop是一款专业的WEB打印控件,它源自软件解决方案提供商在B/S框架项目中的自主研发。插件从1.0版就非常稳定,但正由于其出身缘故,插件的应用比较适合如下情况:
●开发B/S架构项目,有很多打印功能要做
●用户相对固定但打印机类型繁杂
●有“套打票据”等精打业务,又不想多费精力
●有些内容和格式已在网页中,不想另做打印页面
●不想为打印问题多投资,打印不是开发重点
●希望找一个简单实用而且专业的打印方案
二、安装或升级
Lodop的安装是它的彩头之一,由于浏览器的安全设置问题,一般插件的安装颇费脑筋,成功率大都很低。但Lodop的安装却做到了安全、简单和实用。在Lodop的发布文件包中,只有一个关键安装文件install_lodop.exe,仅仅运行这个600K的小文件(IE系的浏览器不需要其它附加文件)就可以成功安装。开发环境和最终用户的安装都可采用这个方式。如果将该文件改名为uninstall_lodop.exe(在原文件名前加un),就变成卸载文件(靠!太节省了),而重复执行(新)安装文件就是升级。
Lodop安装后,在系统目录
WINDOWS\system32下会安装一个ocx文件
CAOSOFT_WEB_PRINT_lodop.ocx,有特殊需要的使用者完全可以将该文件签名,用传统的OCX安装方式发布。
细心的读者可能会发现,这种安装方式带来一个问题,就是软件新版本的升级判断(任何成熟的程序都存在升级可能),针对这个问题,Lodop的应对措施也比较特别,在发布文件包中有一个安装和升级的样例JS文件CheckActivX.js,其内容如下:
function
CheckLodop(){
var
oldVersion=LODOP.Version;
newVerion="1.0.1.0";
if
(oldVersion==null){
document.write("<br>插件Lodop未安装!请点击这里<a
href='install_lodop.exe'>执行安装</a><br>");
if
(navigator.appName=="Netscape")
document.write("<br>(Firefox浏览器先点击这里<a
href='npActivexPlugin.0.6.3.7.xpi'>安装运行环境</a>)<br>");
} else if
(oldVersion<newVerion)
document.write("<br>当前插件版本需要升级!<a
href='install_lodop.exe'>点击这里执行升级</a><br>");
}
其中的关键点是LODOP.Version,可以看出Lodop提供了一个“读版本号”函数,这样版本的升级问题就全部交给JS来实现了(JS处理起这个来就小菜了),以下是插件在页面内的调用代码,其中包含CheckLodop的利用:
<head><title>网页标题
</title>
<script language="javascript"
src="CheckActivX.js"></script>
</head>
<OBJECT
ID="LODOP"
CLASSID="clsid:2105C259-1E0C-4534-8141-A753534CB4CA"
WIDTH=100 HEIGHT=28>
<param name="Caption"
value="打印准备好">
<param name="Border"
value="1">
</OBJECT>
<script
language="javascript">
CheckLodop();
</script>
以上两段代码相互配合实现了Lodop的安装、调用和升级。之所以将CheckActivX.js作为一个资源文件来部署,既可以利用浏览器的缓存减少页面内容的重复下载量,毕竟多数应用是动态页面,同时还实现了插件发布统一管理,整个项目中只要有这一个地方发布Lodop。其它页面仅仅拷贝嵌入第2段代码就OK了!
三、插件参数和插件函数
Lodop的参数和函数并不多,但足够强大,这也是使用者喜欢它的原因之一。
(在这个小段落有两个概念“插件参数”和“函数参数”,注意它俩的区别)
1:插件参数:
Lodop原设计的参数较多,但最常用的只有这几个:Caption、Border、Version、CompanyName、RegID
等五个。如果不希望在页面中显示插件,可以设置插件的WIDTH和HEIGHT全为0,假如要显示,那显示的插件名称就由参数Caption来设置,正如样例中的“打印准备好”,可以从界面看清插件是否运行正常。
参数Border可以设置插件的外观是否有边框线(感觉没有边框线更融入页面),这个参数用处不大,之所以介绍它是因为其参数值的类型很具代表性,在Lodop的参数和函数中,逻辑值全部采用0(否false)和1(是true),所以Border的Value等于1就表示要加边框线了。
如下是插件参数含义表:
|
插件参数名
|
含义
|
|
Caption
|
插件显示名
|
|
Border
|
逻辑值:0-无边框线,1-有边框线
|
|
Version
|
版本号
|
|
CompanyName
|
(注册用)用户名简称,要求少于8个汉字或16个字符
|
|
RegID
|
(注册用)注册号,由版权人根据用户名简称提供,20个数字组成
|
注册号可以将试用版直接变为正式版,试用版与正式版的区别是在打印输出时会含有“试用版”字样,功能并没有限制。
2、插件函数:
Lodop控制输出布局,是利用函数来实现的。Lodop每个功能函数的参数比较多,但并不显繁琐和冗余,反而在实际应用中发现比用插件参数方式要灵活和快速。
Lodop的最初设计不仅仅是打印功能,所以功能函数很多,以下是打印类函数清单:
SET_PRINT_PAPER(intTop,intLeft,intWidth,intHeight,strPrintName);
ADD_PRINT_TEXT(intTop,intLeft,intWidth,intHeight,strContent);
SET_PRINT_TEXT_STYLE(intItemNO,strFontName,ineSize,intBold,intItalic,intUnderline,intAlignment);
ADD_PRINT_HTML(intTop,intLeft,intWidth,intHeight,strContent);
PRINT_SETUP;
PREVIEW;
PRINT;
插件函数的功能及参数含义:
|
函数名
|
函数参数
|
功能含义
|
|
SET_PRINT_PAPER
|
intTop, intLeft, intWidth, intHeight,
strPrintName
|
功能:设置打印纸张;
参数分别设置纸张的上边距、左边距、宽、高及打印业务名;
|
|
ADD_PRINT_TEXT
|
intTop, intLeft, intWidth, intHeight,
strContent
|
功能:增加一条文本打印项
参数分别设置文本在纸张内的上边距、左边距、宽、高及文本内容。
|
|
SET_PRINT_TEXT_STYLE
|
intItemNO, strFontName, ineSize, intBold,
intItalic,intUnderline, intAlignment
|
功能:设置该文本项样式,无该函数则取缺省样式。IntItemNO是文本项序号,以ADD_PRINT_TEXT的先后顺序为准,从1开始。strFontName是字体名,intAlignment左右靠齐方式,一般调试用。其它参数分别设置文本内容项的字体大小、是否粗体、是否斜体和有否下划线。
|
|
ADD_PRINT_HTML
|
intTop, intLeft, intWidth, intHeight,
strContent
|
功能:增加一项超文本打印区域。参数设置该区域在纸张内的上边距、左边距、宽、高及超文本获取语句(一般用innerHTML)
|
|
PRINT_SETUP
|
|
打印设置(自定布局)
|
|
PREVIEW
|
|
打印预览,无参数
|
|
PRINT
|
|
直接打印,无参数
|
其中函数参数strPrintName需要特别注意,Lodop控制的打印业务,其布局可以在不同的使用者电脑上自行调整,调整结果保存在本地,保存时就按参数strPrintName指定值来起名的,所以strPrintName值不能重复(感觉这是lodop的一个软筋)!!至少在一个项目工程中不能出现重复。建议其赋值原则为:“工程简称”+“打印业务名称”+版本序号。譬如“湖北省地税征管系统完税证套打”可以起名为:HBZGXT_WanShuiZhengTaoDa01
网页打印插件Lodop1.0完整教程(二)