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:


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM