一:概述
Lodop设计者对 WEB下的打印开发任务进行了分类汇总, 高度抽象,设计出仅用几个功能函数,就可实现复杂的打印任务,尽量减少使用者的知识累赘。
控件发布包有 3 个系统文件 组成,全部功能 用 4 个控件参数 和 2 组功能函数 来实现。
二:系统文件
Lodop 发布包内主要有如下几个文件:
install_lodop.exe
该文件是控件安装和升级的主文件,提供给用户或开发者下载安装,如果不特意拦截一般都能 100%安装,对“网页插件安装难”有一定改善。如果将其复制或改名为uninstall_lodop.exe (名前加 un)就可卸载控件。
安装界面如下:
LodopFuncs.js
该文件是用来引导安装控件的一个 JS 文件,是个样例,但建议直接采用。其中getLodop 的任务是判断浏览器的类型并决定采用哪个对象实例,并检测控件是否安装、是否最新版本、并引导安装或升级。
三:功能函数
Lodop 的功能函数不多,但参数比较复杂。全部函数分“基本函数”和“扩展函数”两类,两类函数有类似性,基本函数使用简单,达不到要求时请使用扩展函数,二者无本质区别。
01. 获得软件版本号
let version = LODOP.VERSION
02. 打印初始化
var LODOP = getLodop()LODOP.PRINT_INIT()
格式:PRINT_INIT(strTaskName)
功能:初始化运行环境,清理异常打印遗留的系统资源,设定打印任务名
参数:
strTaskName:打印任务名,字符型参数,由开发者自主设定,返回逻辑值;返回逻辑真表示初始化成功,逻辑假表示初始化失败,失败原因有:前一个打印事务没 有完成;操作系统没有打印机 (驱动)等;03. 设置纸张大小
LODOP.SET_PRINT_PAGESIZE(0, '210mm', '297mm', 'A4')
格式:
SET_PRINT_PAGESIZE(intOrient, PageWidth,PageHeight,strPageName)
功能:设定打印纸张为固定纸张或自适应内容高,并设定相关大小值或纸张名及打印方向
参数:intOrient:打印方向及纸张类型,数字型;- 1:纵(正)向打印,固定纸张;
- 2:横向打印,固定纸张;
- 3:纵(正)向打印,宽度固定,高度按打印内容的高度自适应;
- 0/其它 :打印方向由操作者自行选择或按打印机缺省设置;
PageWidth:设定自定义纸张宽度,整数或字符型;- 整数时缺省长度单位为 0.1 毫米,如该参数值为 45,则表示 4.5mm;
- 字符型时可包含单位名: in(英寸 ),cm(厘米 ) ,mm(毫米 ) ,pt(磅),px(1/96 英寸 ),如1mm表示1毫米
PageHeight:固定纸张时设定纸张高;高度自适应时设定纸张底边的空白高- 整数时缺省长度单位为 0.1 毫米,如该参数值为 45,则表示 4.5mm;
- 字符型时可包含单位名: in(英寸 ),cm(厘米 ) ,mm(毫米 ) ,pt(磅),px(1/96 英寸 ),如1mm表示1毫米
strPageName:所选纸张类型名,字符型;控件则采用所选打印机的默认纸张,实际打印时,控件按如下优先级顺序确定纸张大小:- 第 1 优先是打印维护里 纸张属性 (“本机自行定义纸张” )设置的纸张大小
- 第 2 优先是 SET_PRINT_PAGESIZE 指定的纸张大小
- 第 3 优先是上次打印时在预览界面设置里选择的纸张类型
- 第 4 是按所选打印机的默认纸张
建议:如果打印纸张不固定,希望由操作者自主选择纸张时,则不要调用本函数;
04. 增加超文本打印项(普通模式)
LODOP.ADD_PRINT_HTM(0, "5mm", "200mm", '297mm', document.getElementById("body").innerHTML);
格式:ADD_PRINT_HTM(Top,Left,Width,Height,strHtmlContent)
功能:增加超文本打印项,设定该打印项在纸张内的位置和区域大小,实现超文本控制打印;
参数:
Top:内上边距,整数或字符型,整数时长度单位为px,符型时可包含单位名:in,cm,mm,pt(磅)、px,%;Left:内左边距,整数或字符型,长度单位同上;Width:打印区域的宽度,整数或字符型,长度单位同上;本参数可以用RightMargin关键字转义为打印区域相对于纸张的“右边距”;strHtmlContent:超文本代码内容,字符型,可以是一个完整的页面超文本代码,或者是一 个代码段落,也可以是URL:web 地址形式的 URL 地址
要求:强制分页符仅适用本函数;
说明:
Lodop 专有样式和属性有:
- 代码中若包含
style="page-break-after:always"或style="page-break-before:always",该元 素称为“强制分页元素” ,控件会在该元素处分页; - 代码中的标签 IMG 如果有 transcolor 属性,则可以实现透明打印图片。这里的颜色值可以是“ #”加三色16 进制值组合, 也可以是英文颜色名,例如属性格式 为:transcolor=”#FFFFFF” 表示白色透明底色;
- 代码中的元素如果包含 borderthin 属性,如果属性值等于 true,则该元素的 border 在合 并单元格时会采用 单细线 模式
05. 增加表格打印项(超文本模式)
```javascript LODOP.ADD_PRINT_TABLE(160, ‘5mm’, ‘200mm’, ‘297mm’, document.getElementById(“table”).innerHTML)
|
第#页 |
``
格式:ADD_PRINT_TABLE(Top,Left,Width,Height,strHtml)<br />功能: 用超文本增加一个表格打印项,设定该表格在每个纸张内的位置和区域大小。打印时只输出首个页面元素table的显示内容,当table内包含thead或tfoot`时,一旦表格被分页,则每个打印页都输出表头或表尾 ;参数:
Top:内上边距,整数或字符型,单位同上;Left:内左边距, 整数或字符型,单位同上;Width:打印区域的宽度,整数或字符型,单位同上;本参数可以用 RightMargin 关键字转义为打印区域相对于纸张的“内右边距”Height:表格数据体 (tbody)区域的高度,整数或字符型,单位同上;控件按这个值自动分页。本参数可以用 BottomMargin 关键字转义为打印区域 相对于纸张的“内下边距”strHtml:超文本代码内容,字符型,未限制长度。可以是一个完整的页面超文本代码,或者是一 个代码段落,也可以是 URL:web 地址 形式的 URL 地址。要求实际内容中至少包含一个 table 元素;
说明:本函数能识别的超文本专有元素属性有 tdata、format、tclass、tindex等四个,它们主要用来实现分页小计、分类合计等统计功能,这四个属性可以用在 table 内的任何元 素上,包含 tdata 属性的超文本元素下面称为 “统计结果元素”,被统计的超文本元素称为 “数 据元素”,它们的属性值及其含义如下:
tdata:设置统计类型,其值和含义为:subCount—-本页行数,即本页该数据列的单元格行数;subSum—-本页合计,即本页该数据列的数值合计;subAverage—-本页平均数,即本页合计除以本页行数;Count—-累计行数,即从第一页到本页的该列行数的累加值;Sum—-累计数,即从第一页到本页的该列数值的累加值;Average—- 累计平均数,即累计数除以累计行数;allCount—-总行数,即该列全表的行数;allSum—-总计数,即该列全表的数值总和;allAverage—-总平均数,即全表总计数除以总行数;pageNO—-页号,即本 table 页的序号(与打印纸张的页号不一定相同) ;pageCount—-总页数,即全( table)表被分成的总页数;
