首页 > 技术文章 > LODOP打印超文本中部分文字消失的一种情况1

huaxie 2019-01-22 10:40 原文

如果有两对空span,第一对里面是空格,第二对里面是文字,在这两对span标签之间的文字会消失。
<span>&nbsp;</span>文字<span>文字</span>类似这样的格式
可能底层ie浏览器的解析有关,由于Lodop借助的是windows底层的引擎进行解析,lodop本身不自带浏览器引擎(lodop和c-lodop都是轻量级,两三兆以内的小东西),所以受引擎解析的而影响,可以尽量避免这种格式的出现,由于一些软件样式都是自动生成的,有许多不需要的样式和标签,可酌情处理一下传来的样式。

或换用ADD_PIRNT_HTML(超文本的图形模式)试试,这种类似截图,能更好的还原超文本的样式,适合精度高的打印机,精度低的打印机可能会不太清楚。

测试代码:

<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>
<div id="a">
    <span>2)<span>&nbsp;&nbsp;&nbsp;&nbsp; </span></span>文字<span>:</span>这是一段测试文字</p>
    <!--:前面的“文字”消失了-->
</div>
<div id="b">
    <span></span>文字测试1<span></span>
    <!--两对空span,之间的“文字测试1”没有消失-->
</div>
<div id="c">
   <span>&nbsp;</span>文字测试2<span></span>
   <!--两对span,第一对span标签里是空格&nbsp;第二对里是空的,之间的“文字3”没有消失-->
</div>
<div id="d">
   <span>前面的</span>文字3<span>文字测试3的结果</span>
   <!--两对span,第一对span标签里有文字;第二对里有文字,之间的“文字3”没有消失了-->
</div>
<div id="e">
   <span>&nbsp;</span>文字4<span>文字测试4的结果</span>
   <!--两对span,第一对span标签里是空格&nbsp;第二对里有内容,之间的“文字3”消失了-->
</div>
<a href="javascript:prn1_preview()">打印预览</a>
<script language="javascript" type="text/javascript">   
        var LODOP; //声明为全局变量 
    function prn1_preview() {
        LODOP=getLodop(); 
        LODOP.PRINT_INIT("");
        LODOP.ADD_PRINT_HTM(10,10,410,30,document.getElementById("a").innerHTML);
        LODOP.ADD_PRINT_HTM(52,26,410,30,document.getElementById("b").innerHTML);
        LODOP.ADD_PRINT_HTM(102,24,410,30,document.getElementById("c").innerHTML);
        LODOP.ADD_PRINT_HTM(152,24,410,30,document.getElementById("d").innerHTML);
        LODOP.ADD_PRINT_HTM(210,24,410,30,document.getElementById("e").innerHTML);
        LODOP.PRINT_DESIGN();
    };
</script> 
</body>

图示:

推荐阅读