lodop一种导致自定义纸张无效现象的错误写法

代码设置了自定义纸张,预览下方状态栏先的不是设置的纸张,而是诸如A4纸张等默认纸张。
且预览的设置里是该真实打印机预览的,这种现象一般是该打印机不支持自定义纸张导致的。

纸张设置,参考样例5 http://www.c-lodop.com/demolist/PrintSample5.html
用xps或pdf虚拟打印机测试一下(测试可用样例5),如果虚拟打印机输出的是正确的纸张,真实打印机不是,可能是打印机不支持该自定义纸张。 选择该真实打印机,在打印预览下方状态栏查看一下纸张大小,有的打印机不支持该自定义纸张。
样例5的步骤1输入尺寸,点预览,预览里切换不同打印机,该真实打印机不支持该自定义纸张尺寸,会不生效。

不过目前发现,也有一种错误写法,可能会导致支持该自定义纸张,预览却显示的是A4等默认尺寸,这种现象的原因是指定打印机错误导致的。
在打印任务内指定打印机语句,可用:
SET_PRINTER_INDEX(oIndexOrName);按序号或名称指定打印机,选定后禁止手工重选;
SET_PRINTER_INDEXA(IndexorName);按序号或名称指定打印机,选定后允许手工重选;

如果把指定windows默认打印机(样例5发步骤7), LODOP.SET_PRINT_MODE("WINDOW_DEFPRINTER",打印机名称或序号);这种写到了和打印在一个任务里,误认为该语句是指定该打印任务的打印机语句,就会出现这种现象。

如果想用语句修改windows默认打印机,应和打印任务分成两个任务,控制不同的功能,例如样例7任务内指定打印机,样例5的步骤7里的单独操作windows默认打印机。

现象
预览的设置是该打印机,预览下方状态栏该纸张不生效。
(虚拟打印机也会表现为自定义纸张不生效)

现象原因
误认为LODOP.SET_PRINT_MODE("WINDOW_DEFPRINTER",打印机名称或序号);是在任务内指定打印机,写到了任务里,导致出现这个现象。

测试代码 :

    <script language="javascript" src="LodopFuncs.js"></script>
  <title>Document</title>
 </head>
 <body>
<a href="javascript:prn1_preview()">预览效果1(自定义纸张无效)</a><br>
<a href="javascript:prn2_preview()">预览效果2(自定义纸张有效)</a><br>
<script language="javascript" type="text/javascript">   
        var LODOP; //声明为全局变量 
    function prn1_preview() {//测试错误写法
        LODOP=getLodop(); 
        LODOP.PRINT_INIT("");
        LODOP.SET_PRINT_PAGESIZE(1,1100,2000,"");  
        LODOP.SET_PRINT_MODE("WINDOW_DEFPRINTER","Microsoft XPS Document Writer");//错误写法,测试用
        LODOP.ADD_PRINT_TEXT(0,0,100,20,"文本内容一");//然后多个ADD语句及SET语
        //LODOP.PRINT_DESIGN();
        LODOP.PREVIEW();    
    };
    function prn2_preview() {
        LODOP=getLodop(); 
        LODOP.PRINT_INIT("");
        LODOP.SET_PRINT_PAGESIZE(1,1100,2000,"");  
        LODOP.SET_PRINTER_INDEX("Microsoft XPS Document Writer");
        LODOP.ADD_PRINT_TEXT(0,0,100,20,"文本内容一");//然后多个ADD语句及SET语
        //LODOP.PRINT_DESIGN();
        LODOP.PREVIEW();    
    };
</script> 
 </body>

图示:

 

 

posted @ 2022-02-18 16:46  花谢悦神  阅读(1030)  评论(0编辑  收藏  举报