最近,給客戶發一個事件提醒軟件,其中客戶要求實現打印功能,因為是用asp.net mvc 開發首先考慮到用水晶報表來實現(crystalReport),以前開發c# winform程序,感覺水晶報表還是蠻好的,但自從使用asp.net mvc 開發,感覺不是很友好,無意中看到有一個支持web(網頁打印)的打印插件lodop,打開官網,發現該軟件比較正規,網上評價也是比較好,抱著試試看的態度,去官方網站:Lodop和C-Lodop官網主站,下載并安裝。根據官方文檔,并結合自己的經驗,特分享如下:
網頁效果如圖:
實現的打印效果圖示如下:
很是干凈和整潔。非常漂亮!
登錄官網(Lodop和C-Lodop官網主站),下載相關安裝文件:
安裝包如下,根據圖示安裝:
本人在c# asp.net mvc 下測試,讀者可以根據自己熟悉的語言對號入座。分享代碼如下:
1.當然首先在vs2022中的工程項目界面要引入,LodopFuncs.js
2.部分代碼如下:?
<!DOCTYPE html><html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server"><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><title></title><script language="javascript" src="LodopFuncs.js"></script>
</head>
<body><form id="form1"><table border="1" width="300" id="tb01" bgcolor="#CCFFCC" style="border: solid 1px black; border-collapse: collapse"><tr><td width="133" id="mtb001"><font face="黑體" color="#FF0000" size="3"><u> 《表單一》 </u></font></td></tr></table><table border="1" width="300" height="106" cellspacing="0" bgcolor="#CCFFFF" style="border-collapse: collapse; table-layout: fixed; border: solid 1px black;"><tr><td width="66" height="16" style="border: solid 1px black"><font color="#0000FF">A</font><font color="#0000FF">等</font></td><td width="51" height="16" style="border: solid 1px black"><font color="#0000FF">B</font><font color="#0000FF">等</font></td><td width="51" height="16" style="border: solid 1px black"><font color="#0000FF">C</font><font color="#0000FF">等</font></td></tr><tr><td width="66" height="16" style="border: solid 1px black">A<sub>01</sub></td><td width="80" height="12" style="border: solid 1px black">中-001</td><td width="51" height="12" style="border: solid 1px black">C1<sup>x</sup></td></tr><tr><td width="66" height="16" style="border: solid 1px black">A<sub>02</sub>Φ</td><td width="80" height="16" style="border: solid 1px black">日-スの</td><td width="51" height="16" style="border: solid 1px black"><font face='Vernada'>7㎥</font></td></tr><tr><td width="66" height="16" style="border: solid 1px black; overflow: hidden">A<sub>03</sub><nobr>over隱藏后面的:1234567890</nobr></td><td width="80" height="16" style="border: solid 1px black; overflow: hidden">韓-??</td><td width="51" height="16">C3<sup>x</sup></td></tr></table></form>若只打印《表單一》,看一下<a href="javascript:prn1_preview()">打印預覽</a>,可<a href="javascript:prn1_print()">直接打印</a>也可 <script language="javascript" type="text/javascript"> var LODOP; //聲明為全局變量 function prn1_preview() {CreateOneFormPage();LODOP.PREVIEW();};function prn1_print() {CreateOneFormPage();LODOP.PRINT();};function prn1_printA() {CreateOneFormPage();LODOP.PRINTA();};function CreateOneFormPage() {LODOP = getLodop();LODOP.PRINT_INIT("打印控件功能演示_Lodop功能_表單一");LODOP.SET_PRINT_STYLE("FontSize", 18);LODOP.SET_PRINT_STYLE("Bold", 1);LODOP.ADD_PRINT_TEXT(50, 231, 260, 39, "打印頁面部分內容");LODOP.ADD_PRINT_HTM(88, 200, 350, 600, document.getElementById("form1").innerHTML);};function prn2_preview() {CreateTwoFormPage();LODOP.PREVIEW();};function prn2_manage() {CreateTwoFormPage();LODOP.PRINT_SETUP();};function CreateTwoFormPage() {LODOP = getLodop();LODOP.PRINT_INIT("打印控件功能演示_Lodop功能_表單二");LODOP.ADD_PRINT_RECT(70, 27, 634, 242, 0, 1);LODOP.ADD_PRINT_TEXT(29, 236, 279, 38, "頁面內容改變布局打印");LODOP.SET_PRINT_STYLEA(2, "FontSize", 18);LODOP.SET_PRINT_STYLEA(2, "Bold", 1);LODOP.ADD_PRINT_HTM(88, 40, 321, 185, document.getElementById("form1").innerHTML);LODOP.ADD_PRINT_HTM(87, 355, 285, 187, document.getElementById("form2").innerHTML);LODOP.ADD_PRINT_TEXT(319, 58, 500, 30, "注:其中《表單一》按顯示大小,《表單二》在程序控制寬度(285px)內自適應調整");};function prn3_preview() {LODOP = getLodop();LODOP.PRINT_INIT("打印控件功能演示_Lodop功能_全頁");LODOP.ADD_PRINT_HTM(0, 0, "100%", "100%", document.documentElement.innerHTML);LODOP.PREVIEW();};</script>
</body>
</html>
3.考慮到部分讀者可能看不懂,補充完整代碼如下:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>WEB打印控件LODOP的樣例二:打印當前頁面的內容</title>
<meta name="keywords" content="Lodop、Lodop打印控件、WEB打印、C-Lodop、CLodop、lodop控件、云打印、手機打印、免費、AO打印">
<meta name="description" content="Lodop、Lodop打印控件、WEB打印、C-Lodop、CLodop、lodop控件、云打印、手機打印、免費、AO打印">
<script language="javascript" src="LodopFuncs.js"></script>
</head>
<body>
<iframe src="https://help.lodop.net:8143/k_hlp?type=url&fid=DA" width="500" height="46" frameborder="0" scrolling="no" style="float:right;background:inherit;"></iframe>
<h2><font color="#009999">演示如何打印當前頁面的內容:</font>
</h2>
<form id="form1"><table border="1" width="300" id="tb01" bgcolor="#CCFFCC" style="border:solid 1px black;border-collapse:collapse"><tr><td width="133" id="mtb001"><font face="黑體" color="#FF0000" size="3"><u> 《表單一》 </u></font></td></tr></table><table border="1" width="300" height="106" cellspacing="0" bgcolor="#CCFFFF"style="border-collapse:collapse;table-layout:fixed;border:solid 1px black;"><tr><td width="66" height="16" style="border:solid 1px black"><font color="#0000FF">A</font><font color="#0000FF">等</font></td>
<td width="51" height="16" style="border:solid 1px black"><font color="#0000FF">B</font><font color="#0000FF">等</font></td>
<td width="51" height="16" style="border:solid 1px black"><font color="#0000FF">C</font><font color="#0000FF">等</font></td></tr>
<tr>
<td width="66" height="16" style="border:solid 1px black">A<sub>01</sub></td>
<td width="80" height="12" style="border:solid 1px black">中-001</td>
<td width="51" height="12" style="border:solid 1px black">C1<sup>x</sup></td>
</tr>
<tr>
<td width="66" height="16" style="border:solid 1px black">A<sub>02</sub>Φ</td>
<td width="80" height="16" style="border:solid 1px black">日-スの</td>
<td width="51" height="16" style="border:solid 1px black"><font face='Vernada'>7㎥</font></td>
</tr> <tr><td width="66" height="16" style="border:solid 1px black;overflow:hidden">A<sub>03</sub><nobr>over隱藏后面的:1234567890</nobr>
</td><td width="80" height="16" style="border:solid 1px black;overflow:hidden">韓-??</td><td width="51" height="16">C3<sup>x</sup>
</td></tr> </table>
</form>
<br>
<div id="form2"><table border="1" width="100%" id="tb01" bgcolor="#CCFFCC" style="border:solid 1px black;border-collapse:collapse"><tr><td width="133" id="mtb001"><font face="黑體" color="#FF0000" size="3">《表單二》©</font></td></tr></table><table border="1" width="100%" height="106" cellspacing="0" bgcolor="#CCFFFF" style="border:solid 1px black;border-collapse:collapse"><tr><td width="66" height="16" style="border:solid 1px black"><font color="#0000FF">X</font><font color="#0000FF">等</font></td>
<td width="51" height="16" style="border:solid 1px black"><font color="#0000FF">Y等</font></td>
<td width="51" height="16" style="border:solid 1px black"><font color="#0000FF">Z等</font></td></tr> <tr><td width="66" height="12" style="border:solid 1px black"><span style="font-family:Wingdings;font-size:25px;" >þ</span>X001</td>
<td width="51" height="12" style="border:solid 1px black"><strike>Y001</strike></td>
<td width="51" height="44" rowspan="3" style="border:solid 1px black"><ol style="list-style-type:upper-alpha;list-style-position:inside;"><li>Z001</li><li>Z002</li><li>Z003</li><li>Z004</li><li>Z005</li></ol></td></tr>
<tr><td width="30%" height="16" style="border:solid 1px black"><strong>X002</strong></td>
<td width="51" height="16" style="border:solid 1px black"><u>Y002</u><span style="visibility: hidden">hidesome</span></td></tr> <tr><td width="30%" height="16" style="border:solid 1px black"><span style="text-decoration: overline">X003</span>
</td><td width="40%" height="16" style="border:solid 1px black"><em>Y003</em><input type="radio" name="R1"><input type="radio" name="R1" checked></td></tr> </table>
</div>
<p>1:若只打印《表單一》,看一下<a href="javascript:prn1_preview()">打印預覽</a>,可<a href="javascript:prn1_print()">直接打印</a>也可
<a href="javascript:prn1_printA()">選擇打印機</a>打印。<br><br>
2:若《表單一》和《表單二》一起并列輸出,看一下<a href="javascript:prn2_preview()">打印預覽</a>,其布局風格可<a href="javascript:prn2_manage()">打印維護</a>調整。
<p>3:若打印整個頁面,看看<a href="javascript:prn3_preview()">打印預覽</a>。<br><br>
本例要點是用Document的innerHTML方法把打印目標的超文本送給控件。
<p><a href="../LodopDemo.html"><<回樣例目錄</a>
</p>
<script language="javascript" type="text/javascript"> var LODOP; //聲明為全局變量 function prn1_preview() { CreateOneFormPage(); LODOP.PREVIEW(); };function prn1_print() { CreateOneFormPage();LODOP.PRINT(); };function prn1_printA() { CreateOneFormPage();LODOP.PRINTA(); }; function CreateOneFormPage(){LODOP=getLodop(); LODOP.PRINT_INIT("打印控件功能演示_Lodop功能_表單一");LODOP.SET_PRINT_STYLE("FontSize",18);LODOP.SET_PRINT_STYLE("Bold",1);LODOP.ADD_PRINT_TEXT(50,231,260,39,"打印頁面部分內容");LODOP.ADD_PRINT_HTM(88,200,350,600,document.getElementById("form1").innerHTML);}; function prn2_preview() { CreateTwoFormPage(); LODOP.PREVIEW(); };function prn2_manage() { CreateTwoFormPage();LODOP.PRINT_SETUP(); }; function CreateTwoFormPage(){LODOP=getLodop(); LODOP.PRINT_INIT("打印控件功能演示_Lodop功能_表單二");LODOP.ADD_PRINT_RECT(70,27,634,242,0,1);LODOP.ADD_PRINT_TEXT(29,236,279,38,"頁面內容改變布局打印");LODOP.SET_PRINT_STYLEA(2,"FontSize",18);LODOP.SET_PRINT_STYLEA(2,"Bold",1);LODOP.ADD_PRINT_HTM(88,40,321,185,document.getElementById("form1").innerHTML);LODOP.ADD_PRINT_HTM(87,355,285,187,document.getElementById("form2").innerHTML);LODOP.ADD_PRINT_TEXT(319,58,500,30,"注:其中《表單一》按顯示大小,《表單二》在程序控制寬度(285px)內自適應調整");}; function prn3_preview(){LODOP=getLodop(); LODOP.PRINT_INIT("打印控件功能演示_Lodop功能_全頁");LODOP.ADD_PRINT_HTM(0,0,"100%","100%",document.documentElement.innerHTML);LODOP.PREVIEW(); };
</script> </body>
</html>
如果錯誤,請斧正!謝謝!?