LODOP打印table超宽用省略号带'-'的内容换行问题

前面的博文有div超宽隐藏(LODOP打印超过后隐藏内容样式),还有有table设置超宽隐藏(),此外,还有超宽后用省略号表示的css样式,此文是针对这个样式的。
该样式正常情况下没问题,但是遇到-短线这种英文连接符的时候,会导致换行,换行后隐藏后面的内容,为了宽度固定,可以设置不换行样式,但是浏览器显示正常,lodop可能会有问题。
此问题可以用table里需要的内容嵌套div来解决。
加了居中样式后,-线会可能会变省略号问题:可见本博文的最下方的代码测试代码2和图示2。

测试代码1:

去掉了注释,改为页面文字提示:测试代码相关样式
overflow:hidden 超出隐藏
text-overflow:ellipsis 超出隐藏后的用省略号表示
white-space:nowrap 不换行
word-break: break-all 拆分英文单词如-短线

<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="d1">
超出隐藏:
<table border=1 style="width:140px;border-collapse:collapse;table-layout:fixed;" ><!--超出隐藏-->
<tr>
    <td style="width:40px;">1</td>
    <td style="width:100px;overflow:hidden;">333333333333333333333333333333333333333333333333</td>
</tr>
</table>
<br>
超出隐藏并用省略号表示:
<table border=1 style="width:140px;border-collapse:collapse;table-layout:fixed;" ><!--超出隐藏并用省略号表示-->
<tr>
    <td style="width:40px;">1</td>
    <td style="width:100px;text-overflow:ellipsis;overflow:hidden;">333333333333333333333333333333333333333333333333</td>
</tr>
</table>
<br>
超出隐藏用省略号,内容有-小短线,变成了两行:
<table border=1 style="width:140px;border-collapse:collapse;table-layout:fixed;" ><!--超出隐藏用省略号,内容有-小短线,变成了两行-->
<tr>
    <td style="width:40px;">1</td>
    <td style="width:100px;text-overflow:ellipsis;overflow:hidden;">3-3-3333333333333333333333333333333333333333333333</td>
</tr>
</table>
<br>
超出隐藏用省略号,内容有两组-小短线,变成了三行:
<table border=1 style="width:140px;border-collapse:collapse;table-layout:fixed;" ><!--超出隐藏用省略号,内容有两组-小短线,变成了三行-->
<tr>
    <td style="width:40px;">1</td>
    <td style="width:100px;text-overflow:ellipsis;overflow:hidden;">3-3-333333333333333table-layout3333333333333333333333333333333</td>
</tr>
</table>
<br>
超出隐藏用省略号,内容有-小短线,设置td不换行样式:
<table border=1 style="width:140px;border-collapse:collapse;table-layout:fixed;" ><!---->
<tr>
    <td style="width:40px;">1</td>
    <td style="width:100px;text-overflow:ellipsis;overflow:hidden;white-space:nowrap;">3-3-3333333333333333333333333333333333333333333333</td>
</tr>
</table>
<br>
超出隐藏用省略号,内容有-小短线,设置td不换行样式,并且单词拆分:
<table border=1 style="width:140px;border-collapse:collapse;table-layout:fixed;" ><!---->
<tr>
    <td style="width:40px;">1</td>
    <td style="width:100px;text-overflow:ellipsis;overflow:hidden;white-space:nowrap;word-break: break-all">3-3-3333333333333333333333333333333333333333333333</td>
</tr>
</table>
<br>
超出隐藏用省略号,内容有-小短线,td里加div,并设置不换行。
<table border=1 style="width:140px;border-collapse:collapse;table-layout:fixed;" ><!---->
<tr>
    <td style="width:40px;">1</td>
    <td style="width:100px;"><div style="width:100px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;">3-3-3333333333333333333333333333333333333333333333</div></td>
</tr>
</table>
<br>
</div>
<a href="javascript:prn1_preview()">表格宽度是否固定</a><br>
<script language="javascript" type="text/javascript">
        var LODOP; //声明为全局变量
    function prn1_preview() {
        LODOP=getLodop();
        LODOP.PRINT_INIT("");
        LODOP.ADD_PRINT_HTM(0,0,"100%","100%",document.getElementById("d1").innerHTML);
        LODOP.PRINT_DESIGN();
        //LODOP.PREVIEW();
    };
</script>
</body>

图示1:如图,有些在浏览器中显示正常,但是LODOP预览不正常,解析超文本存在差异,可以更换样式等方式,排查样式,修改样式,实现最后的需要的效果。

如图,浏览器和LODOP预览中样式的差异,除了换行不换行,还有可能存在省略号样式问题,图中的是qq浏览器极速模式下的浏览器样式,和lodop解析引擎是不同的。

在遇到居中样式的时候,有的单元格超过了宽度换行了,设置超出变省略号样式,如果内容里有-短线,lodop预览可能会变成点。
对于这种单元格,可以去掉居中样式,因为它本身内容布满单元格,已经超出了。
方法1:给这个单元格去掉居中样式
方法2:加div,用div控制超出变省略号
以上是目前我测出了的可以的方法,尝试直接加上高度没有效果,其他样式等组合可能也能达到效果,可以实际试验样式。

测试代码 2:

<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="d1">
不加居中样式的:
<table border=1 style="width:140px;border-collapse:collapse;table-layout:fixed;" >
<tr>
    <td style="width:40px;">1</td>
    <td style="width:100px;text-overflow:ellipsis;overflow:hidden;">3-3-3333333333333333333333333333333333333333333333</td>
</tr>
</table>
<br>
加了居中样式的:
<table border=1 style="width:140px;height:20px;border-collapse:collapse;table-layout:fixed;" >
<tr>
    <td style="width:40px;text-align:center;">1</td>
    <td style="width:100px;text-overflow:ellipsis;overflow:hidden;text-align:center;">3-3-3333333333333333333333333333333333333333333333</td>
</tr>
</table>
<br>
改用div的:
<table border=1 style="width:140px;border-collapse:collapse;table-layout:fixed;" >
<tr>
    <td style="width:40px;text-align:center;">1</td>
    <td style="width:100px;"><div style="width:100px;overflow:hidden;text-overflow:ellipsis;text-align:center;white-space:nowrap;">3-3-3333333333333333333333333333333333333333333333</div></td>
</tr>
</table>
<br>
</div>
<a href="javascript:prn1_preview()">表格宽度是否固定</a><br>
<script language="javascript" type="text/javascript">
        var LODOP; //声明为全局变量
    function prn1_preview() {
        LODOP=getLodop();
        LODOP.PRINT_INIT("");
        LODOP.ADD_PRINT_HTM(0,0,"100%","100%",document.getElementById("d1").innerHTML);
        LODOP.PRINT_DESIGN();
        //LODOP.PREVIEW();
    };
</script>
</body>

图示2:

LODOP打印table超宽用省略号带'-'的内容换行问题

原文地址:https://www.cnblogs.com/huaxie/p/11162474.html

时间: 2024-10-04 00:30:30

LODOP打印table超宽用省略号带'-'的内容换行问题的相关文章

LODOP打印table表格宽度固定-超宽隐藏

之前有博文介绍关于超出div隐藏内容的:LODOP打印超过后隐藏内容样式里面提到了overflow:hidden;控制超出后隐藏,但是前面那篇用的是div,如果是在table中,由于table默认的table-layout是auto自动,虽然设置了超出隐藏,也设置了具体的td单元格宽度,设置了table的具体宽度,但是因为这个able-layout是auto还在,内容超过设置的宽度,表格宽度也会发生变化,设置的具体的td的宽度也没有完全按照设置的宽度进行布局. 前面还有篇是介绍固定table宽高

Lodop打印设计界面生成代码带”...(省略)”

Lodop的设计界面中,菜单里的生成代码,如果打印项内容过多,后面会显示"...(省略)",省略的是打印项的内容值,无论是纯文本还是超文本,都可以用选中打印项-右键-设置属性里找到该打印项的全部值,可以复制出来放到值的那个参数里.选中打印项-右键-设置属性-切换到值得那个标签选项.双击选中的打印项也可以,不过有时可能弹出框到打印设计界面后面去了,因此建议右键-设置属性. 打印设计(LODOP.PRINT_DESIGN())关闭后,可以返回完整的打印设计代码,没有"...(省略

Lodop打印控件传入css样式、看是否传入正确样式

Lodop中可以传入页面存在的css样式,也可以是拼接后的新样式,例如本博客的其他博文:Lodop打印如何隐藏table某一列 需要打印的页面,样式不一定都是行内样式,style样式单独写在页面上,或引用的是.css文件等情况,使用Lodop打印控件进行打印超文本的时候,要注意把样式也传进去.可参考LODOP官网的样例10(或下载中心综合版里自带的样例10),如图,就是该样例的几种引用css样式的方式: 引入之后,可以通过打印设计(PRINT_DESIGN) 选中超文本打印项-右键-把查看到的超

LODOP打印超文本字符串拼接2 单选选择css样式表格

之前的相关字符串拼接的博文:LODOP打印超文本字符串拼接1 固定表格填充数值之前博文介绍过,字符串可以随意拼接,只要最后组织成的字符串是自己需要的超文本就可以了,前面还有一篇也是拼接样式的:Lodop打印如何隐藏table某一列.该文也演示拼接样式,演示如何用单选框选择样式,一个按钮实现不同的样式的打印效果.由于之前的博文:Lodop打印控件不打印css背景图怎么办,这个是早期写的,没有在博文里放代码,代码都在图里,这里再演示下lodop不打印css背景图的解决方法. 如图,一个单选框是选择的

Web打印 Lodop打印控件 bootstrap框架

一.下载Lodop打印控件http://www.lodop.net/ 二.将解压的Lodop文件夹加入到项目中 三.在web页面中引入Lodop的js文件 <script src="../Scripts/Lodop/LodopFuncs.js"></script> <object id="LODOP_OB" classid="clsid:2105C259-1E0C-4534-8141-A753534CB4CA" wi

[原创]Lodop打印, 以及Lodop引用css文件控制打印样式的问题.

最近在做Lodop打印功能: 思路是:  用MasterPage搭个打印页面的框架, 然后在具体的页面中填入数据, 打印的样式由母版页和CSS来控制. 困扰了一天的问题是:  在打印的JS文件中, 引用外部css文件时, 需要拼出实际的含有IP地址的CSS文件地址, 并且需要用双斜杠(//)来代替单斜杠. 代码如下: //母版页, 注意:  url的拼接形式 <input id="hidCssRef" name="hidCssRef" type="h

lua 打印 table 拷贝table

-- 打印table function print_lua_table (lua_table, indent) if lua_table == nil or type(lua_table) ~= "table" then return end local function print_func(str) XLPrint("[Dongyuxxx] " .. tostring(str)) end indent = indent or 0 for k, v in pair

chrome升级后LODOP打印插件无法使用

今天帮朋友使用LODOP实现一个套打程序时,发现LODOP打印插件在chrome下始终无法使用.分析后发现是自己才升级了chrome,chrome新版默认是禁用npapi的,因此需要手动启用一下,启用方法如下: 在谷歌浏览器地址栏输入:chrome://flags/#enable-npapi 然后找到“启用NPAPI”,点击启用,根据提示重启chrome即可.

Lua打印table升级版

原Lua打印table有个很致命的问题,递归深度过大会导致栈溢出(stack overflow). 首先,需要明白,lua里出现栈溢出有以下情况: "too many arguments", "assume array is smaller than 2^40 ", "string slice too long", "too many captures", "too many arguments to script&