web打印實現方案 Lodop6.034 使用方法總結
官文下載:
http://mtsoftware.v053.gokao.net/download.html
本地 Lodop6.034 版本下載:/Files/tiger8000/Lodop6.034.rar
假設你的 lodop 打印控件放在你項目的根目錄下的 Lodop 目錄內
printTable.aspx 文件存在於你項目中的 PrintCenter 目錄內。在此文件的 html 頁面中加入:
<object id="LODOP" classid="clsid:2105C259-1E0C-4534-8141-A753534CB4CA" width="0" height="0">
<embed id="LODOP_EM" type="application/x-print-lodop" width="0" height="0" pluginspage="../Lodop/install_lodop.exe"></embed>
</object>
其中:
是專爲 FireFox 瀏覽器設計的代碼,如果你這個打印控件只在 IE 上應用,那麼上面這名話完全可以不用的。
只這樣加就行了:
<object id="LODOP" classid="clsid:2105C259-1E0C-4534-8141-A753534CB4CA" width="0" height="0">
</object>
這樣就把 lodop 打印控件在本頁調用過來了。
實現打印一個俱有 100 行的數據報表,要分頁打印,要求,用A4紙縱向打印,在下面的頁角,顯示當前頁碼及總頁數。
正常情況下,你設定了打印紙張規格後,如 A4 或是自定義紙張大小,然後,你定義了 打印輸出的大小
LODOP.ADD_PRINT_TABLE(110, 33, 750, 900, document.getElementById("printdiv").innerHTML);
距上邊 110 象素,左邊 33 像素,寬 750象素,高 900 象素這外區域內打印內容。打印控件會自動根據紙張大小和你打印區長,高,計算出打印頁數,會自動分頁,你需要做的就是不斷調整打印區 邊距,寬,高 :110, 33, 750, 900
然後,自己打印出 當前頁/總頁數 .
在 aspx 頁中加入:
var LODOP; //聲明爲全局變量
function prn1_preview() {
PrintMytable();
LODOP.PREVIEW();
};
function prn1_print() {
PrintMytable();
LODOP.PRINT();
};
function PrintMytable() {
LODOP = getLodop(document.getElementById('LODOP'), document.getElementById('LODOP_EM'));
LODOP.PRINT_INIT("銀燕公司寬帶收費明細");
LODOP.SET_PRINT_PAGESIZE(1, 0, 0, "A4");
LODOP.ADD_PRINT_TEXT(30, 280, 500, 50, "銀燕公司寬帶財務報表明細")
LODOP.SET_PRINT_STYLEA(1, "ItemType", 1);
LODOP.SET_PRINT_STYLEA(1, "FontSize", 14);
LODOP.SET_PRINT_STYLEA(1, "Bold", 1);
LODOP.ADD_PRINT_TEXT(1050, 370, 200, 22, "第#頁/共&頁");
LODOP.SET_PRINT_STYLEA(2, "ItemType", 2);
LODOP.SET_PRINT_STYLEA(2, "HOrient", 1);
LODOP.ADD_PRINT_TEXT(90, 50, 100, 50, "共:<%=numb%> 條記錄")
LODOP.SET_PRINT_STYLEA(3, "ItemType", 1);
LODOP.ADD_PRINT_TEXT(90, 300, 350, 50, "時間範圍:<%=begindt%> 至 <%=enddt%>")
LODOP.SET_PRINT_STYLEA(4, "ItemType", 1);
//LODOP.ADD_PRINT_TABLE(110, 33, 750, 900, document.documentElement.innerHTML);
LODOP.ADD_PRINT_TABLE(110, 33, 750, 900, document.getElementById("printdiv").innerHTML);
};
</script>
然後,下面是要打印的工資報表 table
<table width="90%" align="center" border="1" cellpadding="0" cellspacing="0" bordercolor="#000000" bordercolorlight="#000000" bordercolordark="#000000" id="tb01" style="border-collapse:collapse">
<asp:Repeater ID="Repeater2" runat="server">
<HeaderTemplate>
<thead>
<tr bgcolor="#F8F8FF">
<th align="center" height="30">序號</th>
<th align="center">姓名</th>
<th align="center">賬號</th>
<th align="center">網費</th>
<th align="center">網費返款</th>
<th align="center">押金</th>
<th align="center">押金返款</th>
<th align="center">安裝費</th>
<th align="center">安裝費返款</th>
<th align="center">賣Modem款</th>
<th align="center">Modem返款</th>
<th align="center">轉賬</th>
<th align="center">繳費日期</th>
</tr>
</thead>
</HeaderTemplate>
<ItemTemplate>
<tbody>
<tr height="20" style="cursor:hand" bgColor="#ffffff" onmouseover="javascript:this.style.backgroundColor='#FFCC33';" onmouseout="javascript:this.style.backgroundColor='#ffffff';">
<td align="center"><%#Container.ItemIndex + 1%></td>
<td align="center"><%#Eval("姓名")%></td>
<td align="center"><%#Eval("賬號")%></td>
<td align="center"><%#Math.Round(Convert.ToDecimal(Eval("網費")), 2)%></td>
<td align="center"><%#Math.Round(Convert.ToDecimal(Eval("網費返款")), 2)%></td>
<td align="center"><%#Math.Round(Convert.ToDecimal(Eval("押金")), 2)%></td>
<td align="center"><%#Math.Round(Convert.ToDecimal(Eval("押金返款")), 2)%></td>
<td align="center"><%#Math.Round(Convert.ToDecimal(Eval("安裝費")), 2)%></td>
<td align="center"><%#Math.Round(Convert.ToDecimal(Eval("安裝費返款")), 2)%></td>
<td align="center"><%#Math.Round(Convert.ToDecimal(Eval("賣Modem款")), 2)%></td>
<td align="center"><%#Math.Round(Convert.ToDecimal(Eval("賣Modem款返款")), 2)%></td>
<td align="center"><%#Eval("轉賬")%></td>
<td align="center"><%#Eval("提交日期","{0:yyyy/MM/dd}")%></td>
</tr>
</tbody>
</ItemTemplate>
<AlternatingItemTemplate>
<tbody>
<tr height="20" style="cursor:hand" bgColor="#f1f1f1" onmouseover="javascript:this.style.backgroundColor='#FFCC33';" onmouseout="javascript:this.style.backgroundColor='#f1f1f1';">
<td align="center"><%#Container.ItemIndex + 1%></td>
<td align="center"><%#Eval("姓名")%></td>
<td align="center"><%#Eval("賬號")%></td>
<td align="center"><%#Math.Round(Convert.ToDecimal(Eval("網費")), 2)%></td>
<td align="center"><%#Math.Round(Convert.ToDecimal(Eval("網費返款")), 2)%></td>
<td align="center"><%#Math.Round(Convert.ToDecimal(Eval("押金")), 2)%></td>
<td align="center"><%#Math.Round(Convert.ToDecimal(Eval("押金返款")), 2)%></td>
<td align="center"><%#Math.Round(Convert.ToDecimal(Eval("安裝費")), 2)%></td>
<td align="center"><%#Math.Round(Convert.ToDecimal(Eval("安裝費返款")), 2)%></td>
<td align="center"><%#Math.Round(Convert.ToDecimal(Eval("賣Modem款")), 2)%></td>
<td align="center"><%#Math.Round(Convert.ToDecimal(Eval("賣Modem款返款")), 2)%></td>
<td align="center"><%#Eval("轉賬")%></td>
<td align="center"><%#Eval("提交日期","{0:yyyy/MM/dd}")%></td>
</tr>
</tbody>
</AlternatingItemTemplate>
<FooterTemplate>
<tr bgcolor="#FFF8DC" >
<td align="center" height="30">合計</td>
<td></td>
<td></td>
<td align="center" class="bigmoneyfont"><%=wangfei%></td>
<td align="center" class="bigmoneyfont"><%=wangfeifankuan%></td>
<td align="center" class="bigmoneyfont"><%=yajin%></td>
<td align="center" class="bigmoneyfont"><%=yajinfankuan%></td>
<td align="center" class="bigmoneyfont"><%=anzhuangfei%></td>
<td align="center" class="bigmoneyfont"><%=anzhuangfeifan%></td>
<td align="center" class="bigmoneyfont"><%=maimaokuan%></td>
<td align="center" class="bigmoneyfont"><%=maimaokuanfan%></td>
<td></td>
<td></td>
</tr>
</FooterTemplate>
</asp:Repeater>
</table>
</div>
1、LODOP.SET_PRINT_PAGESIZE(1, 0, 0, "A4");
1 縱向打印
0 打印紙張的寬度 爲0 ,可自定義寬
0 打印紙張的高度 爲 0 ,可自定義高
A4 指定用 A4 紙打印
當寬度和高度都設爲 0 的時候,才能指定用特定的紙型打印,如:A4 ,B5 等。
2、
LODOP.ADD_PRINT_TEXT(30, 280, 500, 50, "銀燕公司寬帶財務報表明細")
LODOP.SET_PRINT_STYLEA(1, "ItemType", 1);
LODOP.SET_PRINT_STYLEA(1, "FontSize", 14);
LODOP.SET_PRINT_STYLEA(1, "Bold", 1);
第一句:距上 30,距左280,打印區寬 500 ,打印區高 50 這樣的一個區域內打印出文字”銀燕公司寬帶財務報表明細“
第二句:指定剛纔打印的這句話 ItemType屬性,1爲頁眉頁腳,2爲頁號碼,3爲頁數,0 爲普通項。
第三句:指定剛纔打印的這句話 FontSize 屬性爲 14pt
第四句:指定剛纔打印的這句話,加粗顯示。Bold 爲1 代表加粗,0代表正常顯示。
LODOP.SET_PRINT_STYLEA(1, "FontSize", 14);
中最前面的那個參數:1 ,是指的,對頁面中加入的 LODOP.ADD_PRINT 元素的索引,指定是哪 一元素。
因爲 LODOP.ADD_PRINT_TEXT(30, 280, 500, 50, "銀燕公司寬帶財務報表明細")
是 最向加的元素,所以它索引爲 第 1 項。
3
LODOP.ADD_PRINT_TEXT(1050, 370, 200, 22, "第#頁/共&頁");
LODOP.SET_PRINT_STYLEA(2, "ItemType", 2);
LODOP.SET_PRINT_STYLEA(2, "HOrient", 1);
在距上邊界 1050 象素,左 370,寬爲200,高爲22 這樣一個區域內打印頁碼及總頁數。
然後,指定這個索 引爲2 的這個元素的 ItemType屬性,1爲頁眉頁腳,2爲頁號碼,3爲頁數,0 爲普通項。
只有當指定此元素 ItemType屬性,2爲頁號碼 的時候,
LODOP.ADD_PRINT_TEXT(1050, 370, 200, 22, "第#頁/共&頁"); 就會在每個頁的固定位置都顯示,
纔會顯示當前頁碼數及總頁數
4
LODOP.ADD_PRINT_TEXT(90, 50, 100, 50, "共:<%=numb%> 條記錄")
在指定區域內打印總記錄數
LODOP.SET_PRINT_STYLEA(3, "ItemType", 1);
指定剛纔加入的這個索引爲第3個元素的 ItemType屬性,1爲頁眉頁腳
LODOP.ADD_PRINT_TEXT(90, 300, 350, 50, "時間範圍:<%=begindt%> 至 <%=enddt%>")
在指定區域內打印時間範圍
LODOP.SET_PRINT_STYLEA(4, "ItemType", 1);
指定剛纔加入的這個索引爲第4個元素的 ItemType屬性,1爲頁眉頁腳
//LODOP.ADD_PRINT_TABLE(110, 33, 750, 900, document.documentElement.innerHTML);
用這個寫法可以打印整個頁面上的 table表
LODOP.ADD_PRINT_TABLE(110, 33, 750, 900, document.getElementById("printdiv").innerHTML);
用這種寫法也可以打印整個頁面中指定爲 div 的ID 爲 "printdiv" 內的 table
二、 打印某一整個 aspx 頁。
<object id="LODOP" classid="clsid:2105C259-1E0C-4534-8141-A753534CB4CA" width="0" height="0">
<embed id="LODOP_EM" type="application/x-print-lodop" width="0" height="0" pluginspage="../Lodop/install_lodop.exe"></embed>
</object>
<script language="javascript" type="text/javascript">
var LODOP; //聲明爲全局變量
function PrintOneURL(strID) {
LODOP = getLodop(document.getElementById('LODOP'), document.getElementById('LODOP_EM'));
LODOP.PRINT_INIT("打印控件功能演示_Lodop功能_按網址打印");
LODOP.ADD_PRINT_URL(30, 20, 746, "100%", document.getElementById(strID).value);
LODOP.SET_PRINT_STYLEA(1, "HOrient", 3);
LODOP.SET_PRINT_STYLEA(1, "VOrient", 3);
LODOP.PREVIEW();
};
</script>
<input type="hidden" id="T1" size="54" value="../PrintSinglePage.aspx"/>
<a href="javascript:PrintOneURL('T1');">預覽打印</a>