解決Web打印問題的方案
在進(jìn)行Web項(xiàng)目開發(fā)過程中,經(jīng)常需要處理打印頁(yè)面內(nèi)容的需求。通常情況下,我們會(huì)通過Javascript調(diào)用系統(tǒng)內(nèi)置的打印方法來實(shí)現(xiàn)打印功能,例如使用PrintControl.ExecWB(?, ?)函
在進(jìn)行Web項(xiàng)目開發(fā)過程中,經(jīng)常需要處理打印頁(yè)面內(nèi)容的需求。通常情況下,我們會(huì)通過Javascript調(diào)用系統(tǒng)內(nèi)置的打印方法來實(shí)現(xiàn)打印功能,例如使用PrintControl.ExecWB(?, ?)函數(shù)來實(shí)現(xiàn)直接打印和打印預(yù)覽功能。盡管這種方法的打印效果和控制性有一定限制,但對(duì)于一般的打印需求而言,仍然能夠滿足基本要求。
// 調(diào)用PrintControl.ExecWB(?, ?)實(shí)現(xiàn)直接打印和打印預(yù)覽功能。
// preview:是否顯示預(yù)覽。null/false:不顯示,true:顯示
上述代碼可以放在一個(gè)獨(dú)立的JS文件中,并在頁(yè)面中引用該腳本文件,通過進(jìn)一步封裝的函數(shù)來打印指定部分的內(nèi)容:
lt;script language"javascript"gt;
function Print(preview) {
var text ("content").innerHTML;
printContent(preview, text);
}
lt;/scriptgt;
然而,很多時(shí)候我們?cè)陧?yè)面中通過CSS來控制樣式以達(dá)到更好的美觀效果。因此,在打印部分HTML內(nèi)容時(shí),如果沒有考慮這些樣式設(shè)置,打印出來的表格格式和字體可能會(huì)發(fā)生變化,影響觀感。為了解決這個(gè)問題,我們需要進(jìn)行HTML樣式的設(shè)置。
打印效果大致如下圖所示。如果打印的頁(yè)面在框架中,可能還需要選擇“僅打印選定框架”的選項(xiàng)。使用此方法不需要安裝任何控件,具有很好的兼容性。然而,在處理一些復(fù)雜內(nèi)容的報(bào)表打印時(shí),可能會(huì)遇到一些難以控制的問題,因此并非完美的選擇。
后來在需要進(jìn)行證件套打方面的工作時(shí),上述的打印控件無法滿足需求,因此需要尋找另一種能夠更好處理套打事務(wù)的方法或控件。偶然間,我發(fā)現(xiàn)了一個(gè)功能強(qiáng)大且使用簡(jiǎn)單的打印控件,它支持各種格式的打印,并且提供了我關(guān)心的證件套打功能,非常值得推薦。
上述兩種打印方式其實(shí)原理類似,都是打印部分HTML內(nèi)容。然而后者看起來更加精細(xì),并且提供了完善的報(bào)表功能設(shè)置。