Lodop中的一些优先级定义
 

   WEB打印控件Lodop中很多设置有多种方法,例如有好几种方法可以设置纸张大小,当一项设置有多种方法并存时,就存在优先级别问题。尽管这些级别在技术手册都分别有说明,但把它们提炼出来分类比照一下更好理解,下面罗列一些:

一、设置纸张大小的优先级别:

★第一优先级是打印维护中的纸张属性设置的纸张大小,如下截图就是其设置界面,在打印维护窗口双击空白区域会弹出该界面,当某台电脑的打印机很特别,程序控制的所有纸张大小都不适合时可采用本方法。


(图A)

★第二优先级是SET_PRINT_PAGESIZE函数设置的纸张大小,其语法如下:

SET_PRINT_PAGESIZE(intOrient,intPageWidth,intPageHeight,strPageName);

后三个参数可以设置纸张大小,其中intPageWidthintPageHeight用具体数值设置纸张的宽和高,strPageName用预定义的纸张类型名来选择纸张大小,如此以来这里又存在一个子优先级顺序:

前者级别高,只有当宽高乘积小于等于0时后者选择的“A4”这类名称才起作用,例如下面语句:

LODOP.SET_PRINT_PAGESIZE(1,"200mm","290mm","");//设置宽200mm,高290mm

LODOP.SET_PRINT_PAGESIZE(1,0,0,"A4");//选择A4纸,相当于设置宽210mm,高297mm

这样按照优先级别高低原则:当第一优先纸张属性中选择“本机自行定义纸张”并设置了合法数值时,函数SET_PRINT_PAGESIZE所设置的纸张大小就都不起作用了。

这种设置方式适合WEB程序按某个固定纸张大小时的打印输出。
★第三优先级是预览界面的打印设置中选择的纸张类型(大小),如下截图就是其设置界面,在打印预览界面点“设置”按钮会弹出该界面。当某业务的纸张类型不固定,需要操作者自行选择时可采用本方法。如果初始化函数LODOP.PRINT_INIT设置的打印任务名不空时,操作者选择的纸张类型会被Lodop记忆下来(按任务名记)。

按照优先级别高低原则:要想让本方法起作用,前两个高优先级设置没有执行才可以。

(图B)

★最低(第四)优先级是操作系统中所选打印机的默认纸张,如下截图是Win7中的设置界面,各个操作系统稍有差别。按照优先级别高低原则:只有前面三个高优先级设置不执行时,操作系统默认纸张才起作用。


(图C)

二、选择打印机的优先级别:

★第一优先级SET_PRINTER_INDEXSELECT_PRINTER函数指定的打印机,当多个语句同时执行时,以最后执行的语句为准,参考样例7。例如下面的语句:

LODOP.SET_PRINTER_INDEX(2);//选择2号打印机,序号一般以添加顺序排列,从0开始

LODOP.SET_PRINTER_INDEX("My EPSON LQ-1600K");//选择名称是“My EPSON LQ-1600K”的打印机

LODOP.SET_PRINTER_INDEX(-1);//选择操作系统中设为“默认”的打印机,“-1”代表默认打印机

★第二优先级是上次在预览界面的打印设置中选择的打印机,Lodop按任务名对应记忆下来,参考图B。

★最低(第三)优先级是操作系统选择的默认打印机,如下图在目标打印机上右键选“设置为默认打印机”。

这样按照优先级别高低原则:当程序没有执行SET_PRINTER_INDEX语句,而且也没有在打印设置中选择过打印机时,打印会输出到的默认打印机。


(图D)

三、选择打印份数的优先级别:

★第一优先级SET_PRINT_COPIES函数指定的打印份数,这个设置适合那些不弹出选机窗口的直接打印,或者虽然弹出选机窗口但又希望禁止操作者修改打印份数的情况,具体参考样例7。例如下面的语句:

LODOP.SET_PRINT_COPIES(2);//设置打印份数是2份

★第二优先级是上次用预览窗口输出时选择的打印份数,Lodop按任务名对应记忆下来。

以上两种方式按优先级别原则,体现在如下截图中的份数,如果按第一优先执行了SET_PRINT_COPIES函数,则这里的份数禁止修改,否则可以修改,而且还会再次记忆下来。


(图E)

四、ADD语句的优先级别:

    当ADD语句加入的内容位置出现重叠时(例如两个内容叠加定位打印时)输出会有层次,Lodop是以“先下后上”的层次原则进行叠加打印的,也就是后面执行的语句内容会在上面。特别注意如果后者是带背景色的超文本对象,则有可能把前面的内容全遮盖住了。出现这种情况要么设置该超文本透明(在线样例35中的“打印设计”演示了超文本透明打印),要么让该语句先执行。

  如果对象之间有关联,那么层次会按关联顺序向上叠加,“被关联”的在下面,“关联别人”的在上面,参考在线样例41

<小结>

<<转到博文目录