zoukankan      html  css  js  c++  java
  • LODOP直线px转换mm变斜线

    LODOP中打印项顶边距左边距,宽高,可以选择的单位很多,详细可在LODOP官网下载参考LODOP技术手册。

    关于LODOP打印直线和虚线,可查看本博客相关博文:Lodop如何打印直线Lodop打印控件 如何打印虚线
    在上诉打印直线的博文里,是这样介绍的:
    线宽=高 -----水平直线
    线宽=宽-----垂直直线
    测试用的是打印设计的默认单位px,LODOP中的px并不是超文本中的相对单位px,而是绝对单位,1px等于1/96英寸,与正常DPI显示设置的像素值相等。如果采用该单位,那么正常显示的屏幕内容与实际打印输出的内容大小相当,这个长度单位可以实现感觉上的“所见等于所打”,px是缺省长度单位,如此以来,单位换算关系为:1in = 2.54cm = 25.4mm = 72pt = 96px。

    而LODOP的打印设计生成代码的时候,可以选择单位转换,但是如上的换算关系,换算之后存在差值,换算的是保留两位小数,因此会出现,同一条直线,在打印设计里用px设计后打印出来是直线,但是用打印设计的生成代码的单位转换后,直线就不是直线,而是斜线了。

    有客户反馈,横线把高设置成0,竖线把宽设置成0,用转换后的mm单位就可以了,个人实际测试了一下,确实是可以的,预览和打印都变成直线了,只是在打印设计,线条是看不出来的,只有左侧打印项列表能看到打印项的存在,点击左侧打印项列表可以选中打印项,查看到线条的位置。

    测试代码

    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>WEB打印控件LODOP</title>
    <script language="javascript" src="LodopFuncs.js"></script>
    </head>
    <body>
    <a href="javascript:prn1_preview()">打印预览</a><br>
    <script language="javascript" type="text/javascript">   
            var LODOP; //声明为全局变量 
        function prn1_preview() {
            LODOP=getLodop(); 
            LODOP.PRINT_INIT("");
            LODOP.SET_PRINT_PAGESIZE(1,1000,1000,"");
            LODOP.ADD_PRINT_LINE(49,110,53,287,0,4);
            LODOP.ADD_PRINT_LINE(18,65,144,69,0,4);
            LODOP.NEWPAGE();
            LODOP.ADD_PRINT_LINE("12.96mm","29.1mm","14.02mm","75.94mm",0,4);
            LODOP.ADD_PRINT_LINE("4.76mm","17.2mm","38.1mm","18.26mm",0,4);
            LODOP.NEWPAGE();
            LODOP.ADD_PRINT_LINE("12.96mm","29.1mm","13.02mm","75.91mm",0,4);
            LODOP.ADD_PRINT_LINE("4.76mm","17.2mm","38.07mm","17.25mm",0,4);
            LODOP.PRINT_DESIGN();
            //LODOP.PREVIEW();    
        };
    </script> 
    </body>

    图示:
    如图,打印设计的单位转换,单位转换保留两位小数,用转换成mm语句输出该线条,显示为斜线。
    水平横线高度设置0,竖线宽设置0,打印设计看不到,但是实际输出是直线。

    Lodop打印设计生成代码的自动转换,保留2位小数。
    单位换算1in = 2.54cm = 25.4mm = 72pt = 96px。

    打印设计的默认px单位:
    LODOP.ADD_PRINT_LINE(49,110,53,287,0,4);
    LODOP.ADD_PRINT_LINE(18,65,144,69,0,4);
    经过打印设计生成代码自动转换mm后:
    LODOP.ADD_PRINT_LINE("12.96mm","29.1mm","14.02mm","75.94mm",0,4);
    LODOP.ADD_PRINT_LINE("4.76mm","17.2mm","38.1mm","18.26mm",0,4);

    个人实际测试一下计算方法,人工算一般先把换算约2位,再进行处理,但是计算机或计算器一般不是。
    96px=25.4mm,1px=25.4/96(mm)=0.26458333333333....约等于0.26(mm) 本人用电脑自带的计算器算的
    如图,第一条线的四个参数:
    不1px约后:49px=49*(25.4/96)mm=12.964583333333....约等于12.96mm
    1px换算约后:49px=49*0.26(mm)=12.74(mm)
    如上,生成的转换后的是12.96mm,所以换算关系没有约,而是实际的25.4/96这个换算数值。

  • 相关阅读:
    自考毕业答辩总结
    【项目经验】navicat工具 SQLServer数据库迁移MySQL
    【项目经验】EasyUI Tree
    Django框架基础(一)
    前端相关内容补充
    web框架前戏---web框架的本质
    web框架前戏---基础简介及Django安装配置
    sqlAchemy前戏
    mysql基础(五)之pymysql
    mysql基础(四)之索引
  • 原文地址:https://www.cnblogs.com/huaxie/p/10607626.html
Copyright © 2011-2022 走看看