目前來說,一般一個簡單的詳情頁面列印,直接調用window.print就行了; 但遇到複雜的時候,我們可能會想到用內建好的控件來解決,當然,如果你有時間又不怕麻煩,你也可以自己寫一堆js。
文中所述兩個列印控件均為免費版本,收費版本另當别論。
一、jatoolsPrinter
jatoolsPrinter号稱真正的免費,不加水印,不限IP,相容IE6+等等;
下載下傳位址: http://printfree.jatools.com/
jatoolsPrinter的部署很簡單,可以簡單分為3個步驟:
1.将控件引入到項目中

2.編寫列印js
function doPrint(how)
{
//列印文檔對象.
var myDoc ={
documents: document,
// 在同一頁面中,有多個可列印文檔,他們可以用page_div_prefix屬性來差別
// page_div_prefix字首+page+頁序号 構成可列印div的id,
// 如字首為 'report1' ,則找到以 'report1page1'為id的div作為文檔首頁
// 該屬性,預設值為空
page_div_prefix: "report",
copyrights: '傑創軟體擁有版權 www.jatools.com'
};
// 調用列印方法
if(how == '列印預覽...')
jatoolsPrinter.printPreview(myDoc ); // 列印預覽
else if(how == '列印...')
jatoolsPrinter.print(myDoc ,true); // 列印前彈出列印設定對話框
else
jatoolsPrinter.print(myDoc ,false); // 不彈出對話框列印
}
3.給需要列印的div取id名
預設列印page1,page2,page3...,如果page_div_prefix不為空,需要在id前面加上page_div_prefix對應的值
傑表的優點就不說了,一大堆,這裡說下最主要的兩個缺失功能(當然,收費版應有盡有),
第一,不支援自動縮放列印,就是說,如果你的頁面高度或者寬度過大,那麼,肯定不完全列印,多餘的部門會被截掉
解決的辦法就是你隻能把頁面改小點來去相容它;
第二,不支援列印隐藏對象,這個真的挺頭疼,如果遇到批量列印,而且列印的内容需要到背景去查詢的,這個就不能用了,
有個帶點風險的解決辦法,就是将你不顯示出來的div設定z-index屬性,放到顯示内容的下面就行了。
二、LODOP
lodop同樣免費,而且使用起來也很友善。
下載下傳位址: http://www.lodop.net/download.html
lodop的部署:
1.引入lodop控件
<script language="javascript" src="LodopFuncs.js"></script> |
<object id="LODOP_OB" classid="clsid:2105C259-1E0C-4534-8141-A753534CB4CA" width=0 height=0> |
<embed id="LODOP_EM" type="application/x-print-lodop" width=0 height=0></embed> |
</object> |
2.編寫列印js
var LODOP; //聲明為全局變量
function prn1_preview() {
CreateOneFormPage();
LODOP.PREVIEW();
};
function prn1_print() {
CreateOneFormPage();
LODOP.PRINT();
};
function prn1_printA() {
CreateOneFormPage();
LODOP.PRINTA();
};
function CreateOneFormPage(){
LODOP=getLodop(document.getElementById('LODOP_OB'),document.getElementById('LODOP_EM'));
LODOP.SET_PRINT_STYLE("FontSize",16);
LODOP.SET_PRINT_STYLE("Bold",1);
var htm = str+"<body>"+document.getElementById("page1").innerHTML+"</body>";
LODOP.ADD_PRINT_HTM("0%", "0%", "100%", "100%", htm);
}
具體方法作用可以參考官網demo
LODOP最主要的優點就是可以指定列印哪個子產品,隻要給他一個id就行,真的是很友善,比較明顯的缺點有兩個:
第一,列印頁面不能将原頁面中css帶過來,需要自己引入,具體方法見LODOP功能示範
第二,直接列印出來的頁面,底部居然有LODOP的logo資訊,具體資訊:本頁由【試用版列印控件Lodop6.0.5.6】輸出,這個讓我無法接受,估計使用者看到也會發瘋,
咨詢過LODOP作者,确定需要購買注冊号才能去掉。
總的說來,兩個控件都很不錯,雖然免費的功能不是很多,但一般的項目中應該也是夠用了。