提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
前言
Lodop打印控件常用指令记录
1. VERSION / CVERSION
名称:获得软件版本号
格式:VERSION
结果:返回字符型结果
版本号有四个数字组成,样式为:X.X.X.X
举例:var strVersion=LODOP.VERSION;
具体使用:
if(LODOP.CVERSION < '7.0.4.3'){
alert('Web打印服务Lodop7 需要升级')
}
if (LODOP.VERSION < '6.2.2.6') {
alert('需要升级')
}
2. PRINT_INIT
名称:打印初始化
格式:PRINT_INIT(strTaskName)
功能:初始化运行环境,清理异常打印遗留的系统资源,设定打印任务名。
参数:
strTaskName:
打印任务名,字符型参数,由开发者自主设定,未限制长度,字符要求符合Windows文件起名规则,Lodop会根据该名记忆相关的打印设置、打印维护信息。
若strTaskName空,控件则不保存本地化信息,打印全部由页面程序控制。
结果:返回逻辑值
返回逻辑真表示初始化成功,逻辑假表示初始化失败,失败原因有:
前一个打印事务没有完成;操作系统没有添加打印机(驱动)等。
建议或要求:
该函数与PRINT_INITA都有初始化功能,每个打印事务至少初始化一次,
建议打印程序首先调用该函数。任务名要尽量区别于其它打印任务,
譬如用“XX单位_XX管理信息系统_XX子系统_XX模块_XX打印作业”字样。
不希望最终用户更改打印布局时,则设strTaskName空。
举例:LODOP.PRINT_INIT("打印控件功能演示_Lodop功能_表单一");
LODOP.PRINT_INIT("");
3. SET_PRINT_PAGESIZE
名称:设定纸张大小
格式:SET_PRINT_PAGESIZE(intOrient, PageWidth,PageHeight,strPageName)
功能:设定打印纸张为固定纸张或自适应内容高,并设定相关大小值或纸张名及打印方向。
参数:
intOrient:
打印方向及纸张类型,数字型,
1---纵(正)向打印,固定纸张;
2---横向打印,固定纸张;
3---纵(正)向打印,宽度固定,高度按打印内容的高度自适应;
0(或其它)----打印方向由操作者自行选择或按打印机缺省设置;
PageWidth:
设定自定义纸张宽度,整数或字符型,整数时缺省长度单位为0.1mm, 譬如该参数值为45,则表示4.5毫米。字符型时可包含单位名:in(英寸)、cm(厘米) 、mm(毫米) 、pt(磅),如“10mm”表示10毫米。数值等于0时本参数无效。
PageHeight:
固定纸张时设定纸张高;高度自适应时设定纸张底边的空白高。整数或字符型,整数时缺省长度单位为0.1毫米。字符型时可包含单位名:in(英寸)、cm(厘米) 、mm(毫米) 、pt(磅),如“10mm”表示10毫米。数值等于0时本参数无效。
宽或高无效时下面的strPageName才起作用。
strPageName:
所选纸张类型名,字符型。不同打印机所支持的纸张可能不一样,这里的名称同操作系统内打印机属性中的纸张名称,支持操作系统内的自定义纸张。
关键字“CreateCustomPage”会按以上宽度和高度自动建立一个自定义纸张,所建立的纸张名固定为“LodopCustomPage”,多次建立则刷新该纸张的大小值。
注:PageWidth、PageHeight 和strPageName都无效时,本函数对纸张大小不起作用,控件则采用所选打印机的默认纸张,但intOrient仍可起作用。
实际打印时,控件按如下优先级顺序确定纸张大小:
第1优先是打印维护里纸张属性(“本机自行定义纸张”)设置的纸张大小。
第2优先是SET_PRINT_PAGESIZE指定的纸张大小;
第3优先是上次打印时在预览界面设置里选择的纸张类型;
第4是按所选打印机的默认纸张;
结果:无
建议或要求:
打印初始化之后调用。
如果打印纸张不固定,希望由操作者自主选择纸张时,则不要调用本函数。
举例一:LODOP.SET_PRINT_PAGESIZE(1,2100,2970,"");
设置纸张大小为:宽210mm*高297mm,纵向打印
举例二:LODOP.SET_PRINT_PAGESIZE(2, 0, 0,"A4");
设置纸张为A4(按操作系统定义的A4尺寸),横向打印
4.ADD_PRINT_TABLE
名称:增加表格打印项(超文本模式)
格式:ADD_PRINT_TABLE(Top,Left,Width,Height,strHtml)
功能:用超文本增加一个表格打印项,设定该表格在每个纸张内的位置和区域大小。打印时只输出首个页面元素table的显示内容,当table内包含thead或tfoot时,一旦表格被分页,则每个打印页都输出表头(thead)或表尾(tfoot)。
参数:
Top:
表格数据头(页头thead)在纸张内的上边距,整数或字符型,整数时缺省长度单位为px。字符型时可包含单位名:in(英寸)、cm(厘米) 、mm(毫米) 、pt(磅)、px(1/96英寸) 、%(百分比),如“10mm”表示10毫米。
Left:
表格数据头(页头thead)在纸张内的左边距,整数或字符型,字符型时可包含单位名:in(英寸)、cm(厘米) 、mm(毫米) 、pt(磅)、px(1/96英寸) 、%(百分比),如“10mm”表示10毫米。
Width:
打印区域的宽度,整数或字符型,整数时缺省长度单位为px。字符型时可包含单位名:in(英寸)、cm(厘米) 、mm(毫米) 、pt(磅)、px(1/96英寸) 、%(百分比),如“10mm”表示10毫米。本参数可以用RightMargin关键字转义为打印区域相对于纸张的“右边距”。
Height:
表格数据体(tbody)区域的高度,整数或字符型,整数时缺省长度单位为px。字符型时可包含单位名:in(英寸)、cm(厘米) 、mm(毫米) 、pt(磅)、px(1/96英寸) 、%(百分比),如“10mm”表示10毫米。当内容的高度超出本参数值时,控件会自动分页,后面的内容在下一页对应位置输出,每页至少打印一个TR行(由于table可以嵌套多层子table,这里的TR行是指首层TR)。本参数可以用BottomMargin关键字转义为打印区域相对于纸张的“下边距”。
strHtml:
超文本代码内容,字符型,未限制长度。可以是一个完整的页面超文本代码,或者是一个代码段落,也可以是URL:web地址形式的URL地址。要求实际内容中至少包含一个table元素。
特别说明:本函数能识别的超文本专有元素属性有tdata、format、tclass、tindex等四个,它们主要用来实现分页小计、分类合计等统计功能,这四个属性可以用在table内的任何元素上,包含tdata属性的超文本元素下面称为“统计结果元素”,被统计的超文本元素称为“数据元素”,它们的属性值及其含义如下:
① tdata:设置统计类型,其值和含义为:
② SubCount---本页行数,即本页该数据列的单元格行数;
③ SubDistinctCount---本页非重复行数,即本页该数据列的单元格内容不重复的行数;
④ SubSum---本页合计,即本页该数据列的数值合计;
⑤ SubAverage---本页平均数,即本页合计除以本页行数;
⑥ Count---累计行数,即从第一页到本页的该列行数的累加值;
⑦ DistinctCount---累计非重复行数,即从第一页到本页的该列非重复行数的累加值;
⑧ Sum---累计数,即从第一页到本页的该列数值的累加值;
⑨ Average---累计平均数,即累计数除以累计行数;
⑩ AllCount---总行数,即该列全表的行数;
⑪ AllDistinctCount---非重总行数,全表非重复的行数;
⑫ AllSum---总计数,即该列全表的数值总和;
⑬ AllAverage---总平均数,即全表总计数除以总行数;
⑭ PageNO---页号,即本table页的序号(与总页号不一样),页号数值默认是阿拉伯数字,
也可用显示格式“ChineseNum”设为中文;
PageCount---总页数,即全(table)表被分成的总页数,数值格式同“页号”;
以上属性值可以组合成表达式, 以复杂四则运算形式统计运算, 表达式内除了"加+减-乘*除/"和"括号( )"外,还支持数学函数Trunc Round Sqrt Int Sqr Abs Sin Cos Tan Arcsin Arccos Arctin Logo10 Log2 Round1-6等, 表格内单元格原始(或统计结果)数据可用其id值参与运算。
②format:设置统计结果的显示格式,其值如下样式:
“0”“0.00””“#.##” “#,##0.00”“0.000E+00”“#.###E-0 ” “UpperMoney(大写金额)”
“ChineseNum(中文数字) ”等等,其中的“#”表示当数据为0时不显示。
③tclass:设置分类统计的“类名”,其值可任意设置,在分类统计时,“统计结果元素”和“数据元素”的tclass值必须一致。不设置类名时则全表统计。
④tindex:一般要求“统计结果元素”的位置与“数据元素”的列位置一致或内含在“数据元素”列内,如果位置无法一致,可以用tindex指定对应的数据列,该值是数字型的列序号,从1起始。
⑤占位符:一个要显示统计结果的“统计结果元素”必须要包含占位符,占位符是任意个“#”组成的字符串,占位符可以与其它内容混合在一起,当统计结果值较大时,开发者需要注意占位符要占用足够多的位置,除非占位符周围有合理的空白区,以避免统计结果与普通内容重叠。
结果:无
建议或要求:
要求在打印初始化后调用,建议在画线类函数之后调用。
举例一:LODOP.ADD_PRINT_TABLE(10,10,300,100,"<table border=’1’><tr><td>11</td> <td>12</td></tr><tr> <td>21</td> <td>22</td></tr></table>");
举例二:
LODOP.ADD_PRINT_TABLE(0,0, "100%","100%","URL: http://www.x.com/table.htm");
5. SET_PRINT_MODE
可以用这种方式来,切换windows的默认打印机器
名称:设置打印模式
格式:
SET_PRINT_MODE(strModeType,varModeValue)
功能:设置人工双面打印模式等。
参数:
strModeType模式类型名,字符型,如下是类型名及其含义:
“DOUBLE_SIDED_PRINT”:设置是否人工双面打印。
“PRINT_START_PAGE”:指定要打印的起始页。
“PRINT_END_PAGE”:指定要打印的截止页。
“PRINT_PAGE_PERCENT”:指定整页缩放打印的比例。
“AUTO_CLOSE_PREWINDOW”:设置打印完毕是否自动关闭预览窗口。
“PRINT_SETUP_PROGRAM”:设置打印维护窗口关闭后是否返回程序代码。
“NOCLEAR_AFTER_PRINT”:设置打印或预览后内容不清空是否为真。
“CATCH_PRINT_STATUS”:设置是否进行对后台服务的打印状态进行捕获。
“POS_BASEON_PAPER”:设置输出位置以纸张边缘为基点。
“CUSTOM_TASK_NAME”:设置本次输出的打印任务名(打印任务池里的“文档名”)。
“PROGRAM_VARNAME”:重新指定生成程序代码时的变量ID名。
“PROGRAM_ROOTDIR”:重新指定客户端本地数据的工作目录。
“WINDOW_DEFPRINTER”:设置windows默认打印机。
“WINDOW_DEFPAGESIZE:打印机名或序号”:设置windows中某打印机的默认纸张。
“RESELECT_PRINTER”:设置是否可以重新选择打印机。
“RESELECT_PAGESIZE”:设置是否可以重新选择纸张。
“RESELECT_ORIENT”:设置是否可以重新选择打印方向。
“RESELECT_COPIES”:设置是否可以重新选择打印份数。
“CONTROL_PRINTER:打印机名或序号”:控制打印暂停、恢复打印、清理打印任务。
“TEXT_ONLY_MODE”:设置是否用“纯文本行模式”(后面有说明)快速打印。
“TRYLINKPRINTER_NOALERT”:设置网络共享打印机不畅通时是否阻止弹窗提示。
“PROGRAM_CONTENT_BYVAR”:设置生成程序时内容是用变量名代替。
“CREATE_CUSTOM_PAGE_NAME”:设置动态生成的纸张(表单)名称。
“SEND_RAW_DATA_ENCODE”:设置SEND_PRINT_RAWDATA语句的数据编码集。
“FULL_WIDTH_FOR_OVERFLOW”:设置宽度方向上的内容溢出自动缩小。
“FULL_HEIGHT_FOR_OVERFLOW”:设置高度方向上的内容溢出自动缩小。
“PRINT_DUPLEX”:控制打印机自带的双面打印功能(非手工双面)。
“PRINT_DEFAULTSOURCE”:控制打印机的纸张来源(自动、纸盒、手动等)。
“PRINT_TO_CODES”:设置是否获得打印机原始指令,当PRINT_TO_COPES等于true时,PRINT和PRINTA语句不再把打印任务输出到真实打印机,而是输出为指令字符串(打印机的原始指令)。
“PRINT_NOCOLLATE”:设置非逐份打印,(打印机默认逐份打印,例如3页打印2份, 1-2-3,1-2-3输出,非逐份输出:1-1 2-2 3-3 输出)。
varModeValue模式类型值,整数或字符型,相关值如下:
DOUBLE_SIDED_PRINT的值:逻辑型、整数型或字符型,1或true=是,其它值为否。
PRINT_START_PAGE的值:整数,不设置本参数时,控件默认从1开始打印。适用打印部分页时。
PRINT_END_PAGE的值:整数,不设置本参数时,控件默认打印到最后页。适用打印部分页时。
PRINT_PAGE_PERCENT的值:字符型,具体值有如下几种:
“Full-Width” –宽度按纸张的整宽缩放;
“Full-Height”–高度按纸张的整高缩放:
“Full-Page” –按整页缩放,也就是既按整宽又按整高缩放;
此外还可以按具体百分比例,格式为“Width:XX%;Height:XX%”或“XX%”
比值范围是5%-800%,也就是最大缩小到原来的5%,最大放大8倍。
AUTO_CLOSE_PREWINDOW的值:逻辑型、整数型或字符型,1或true=是,其它值为否。
PRINT_SETUP_PROGRAM的值:逻辑型、整数型或字符型,1或true =是,其它值为否,打印维护窗口关闭后如果不返回程序代码,则返回打印按钮被点击的次数。
NOCLEAR_AFTER_PRINT的值:逻辑型、整数型或字符型,1或true=是,其它值为否,默认值是“否”,也就是说,默认情况下打印或预览后会清空所有内容。
CATCH_PRINT_STATUS的值逻辑型、整数型或字符型,1或true=是,其它值为否,默认值是“否”,也就是说,默认情况下打印时不对打印状态进行捕获,该捕获动作会针对每个打印机开启一个监控线程,对页面性能有少许影响,开启后用GET_VALUE获得状态值。
POS_BASEON_PAPER的值:逻辑型、整数型或字符型,1或true=是,其它值为否。默认值是“否”,也就是默认不以纸张边缘为基点,而以可打印区域的边缘为基点。
CUSTOM_TASK_NAME的值:字符型,可以是汉字,未限制长度,本设置比PRINT_INIT或PRINT_INITA函数设置的打印任务名优先级高,如此以来可以实现在同一套配置文件下起多个打印任务名,以利于按打印任务名管理的输出。
PROGRAM_VARNAME的值:字符型,仅支持字母,不能带各种符号,不执行本设置时的默认ID名是“LODOP” 。
PROGRAM_ROOTDIR的值:字符型,指定的工作目录首字母可以是盘符(如C:),不带盘符时,则在“系统盘:\Program Files”下建立子目录,这里特别注意与其它软件的路径区别。不执行本设置时的默认路径:系统盘:\Program Files\MountTaiSoftware\Lodop,注意要求高级注册,位置在初始化语句后。
WINDOW_DEFPRINTER的值:整数或字符型,整数时指明某打印机的序号,字符时指明某打印机的名称,这个参数把指明的打印机设定为windows系统默认打印机。设置成功时返回字符“ok”,失败时返回错误描述。
WINDOW_DEFPAGESIZE的值:字符型,纸张名称,windows系统必须包含该纸张,可以是后来自定义的纸张。本设置把该纸张设置为对应打印机的默认纸张,设置成功返回字符“ok”,否则返回错误描述。
RESELECT_PRINTER的值:逻辑型、整数型或字符型,1或true=是,其它值为否。当用set_printer_index语句选定打印机后,默认情况下是禁止再重选的,用这项设置可以改变这个禁止规定。
RESELECT_PAGESIZE的值:逻辑型、整数型或字符型,1或true=是,其它值为否。当用set_print_pagesize语句选定纸张大小后,默认情况下是禁止再重选的,用这项设置可以改变这个禁止规定。
RESELECT_ORIENT的值:逻辑型、整数型或字符型,1或true=是,其它值为否,默认值是“否”。当用set_print_pagesize语句选定打印方向后,默认情况下是禁止再重选的,用这项设置可以改变这个禁止规定。
RESELECT_COPIES的值:逻辑型、整数型或字符型,1或true=是,其它值为否,默认值是“否”。当用set_print_copies语句选定打印份数后,默认情况下是禁止再重选的,用这项设置可以改变这个禁止规定。
CONTROL_PRINTER:的值:有三个固定字符值:
“PAUSE”—控制打印机暂停打印;
“RESUME” —控制已经暂停的打印机恢复打印;
“PURGE” —清理打印机的所有打印任务
TEXT_ONLY_MODE的值:逻辑型、整数型或字符型,1或true=是,其它值为否,默认值为“否”,这种模式仅适合部分老款的非图形打印机,只打印文本部分,速度快,图形内容被忽略,请慎用。
TRYLINKPRINTER_NOALERT的值:逻辑型、整数型或字符型,1或true=是,其它值为否。“是”表示阻止,“否”表示不阻止,默认值是“否”,也就是说默认会弹窗提示。
PROGRAM_CONTENT_BYVAR的值:逻辑型、整数型或字符型,1或true=是,其它值为否,默认值是“否”,也就是默认生成程序时内容是用具体值(注意在打印设计界面里用菜单生成程序代码时该内容用描述文字而不是具体值)而不是变量名。
CREATE_CUSTOM_PAGE_NAME 的值:字符型,用来设置新建立的自定义纸张或表单的名称,要求符合window纸张类型的起名规范,不进行这个设置时的默认值是“LodopCustomPage”。
SEND_RAW_DATA_ENCODE的值:字符型,用来设置SEND_PRINT_RAWDATA语句的数据编码字符集,也就是让控件以什么编码形式发给打印机,有如下选项:
UTF-8 UTF-7 UNICODE ANSI UTF-16 UTF-16BE GBK BIG5 EUC-JP
FULL_WIDTH_FOR_OVERFLOW的值:逻辑型、整数型或字符型,1或true=是,其它值为否。
FULL_HEIGHT_FOR_OVERFLOW的值:逻辑型、整数型或字符型,1或true=是,其它值为否。
PRINT_DUPLEX的值:数字,0-不控制 1-不双面 2-双面(长边装订) 3-小册子双面(短边装订_长边水平)。
PRINT_DEFAULTSOURCE的值:数字,1-纸盒 4-手动 7-自动 0-不控制。
PRINT_TO_CODES的值:逻辑型、整数型或字符型,1或true=是,其它值为否。
PRINT_NOCOLLATE的值:逻辑型、整数型或字符型,1或true=是,其它值为否。
结果:返回结果,成功时返回真或字符“ok”,失败时返回假或错误描述。
建议或要求:
直接打印前或打印预览前调用。
举例一:LODOP.SET_PRINT_MODE("POS_BASEON_PAPER",true);
举例二:LODOP.SET_PRINT_MODE("CATCH_PRINT_STATUS",true);
举例三:LODOP.SET_PRINT_MODE("CONTROL_PRINTER:1", "PAUSE");
控制1号打印机暂停。
举例四:LODOP.SET_PRINT_MODE("WINDOW_DEFPAGESIZE:0", "A4");
把window操作系统中0号打印机的默认纸张设为A4。
举例五:LODOP.SET_PRINT_MODE("PRINT_NOCOLLATE",true);
6.SET_PRINTER_INDEX
不会设置windows的默认打印设备。主要用于不希望到其他打印机器出去,打印机不存在可以做一些兜底的逻辑交互。
名称:指定打印设备
格式:SET_PRINTER_INDEX(oIndexOrName)
功能:按名称或序号指定要进行打印输出的设备,指定后禁止重新选择。。
参数:
oIndexOrName:
打印机名称或序号,字符或数字型。数字表示打印机的序号,
从0开始,最大序号是GET_PRINTER_COUNT()减1。-1特指操作系统内设定的默认打印机。
字符代表打印机的名称,与操作系统内的打印机名称一致。
注:用本函数指定打印机后,在预览界面不允许重新选择打印机,
而用另外一个函数SET_PRINTER_INDEXA指定后则允许重新选择。
结果:返回逻辑值
返回逻辑真表示指定成功,逻辑假表示指定失败,失败原因有:该打印设备不存在。
建议或要求:
要求在初始化之后、打印或预览之前调用。
举例一: LODOP.SET_PRINTER_INDEX(0);
举例二: LODOP.SET_PRINTER_INDEX(-1);