jatoolsPrinter8.2最新使用手冊_第1頁
jatoolsPrinter8.2最新使用手冊_第2頁
jatoolsPrinter8.2最新使用手冊_第3頁
免費預(yù)覽已結(jié)束,剩余47頁可下載查看

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)

文檔簡介

jatoolsPrinter 使用手冊〔更新日期:2022-11-13 〕簡介安裝快速入門最簡單的打印預(yù)覽打印前設(shè)置打印參數(shù)保存打印時的打印參數(shù)第一次打印用當(dāng)前配置,后續(xù)打印用最后一次打印配置批量打印文檔多個文檔共存在同一web頁面中,區(qū)別打印不顯示文檔,直接指定url打印打印隱藏對象僅在預(yù)覽時可見,不輸出到打印機的套打底圖打印時樣式類的自動插入〔實現(xiàn)不打印表格線等〕樣式文件〔*.css〕的顯式導(dǎo)入打印結(jié)束后提交數(shù)據(jù)為什么要使用回調(diào)方法打印后關(guān)閉窗口可視化設(shè)計套打’②'視頻演示打印內(nèi)容相對位置的事后調(diào)整及保存 ?視頻演示調(diào)整后的套打位置信息保存到效勞端連續(xù)打印的套打偏移校正 --■■■使用自動分頁表格自動分頁,表頭每頁可見頁內(nèi)多表自動分頁含合并單元格的表格自動分頁 ■-E-J表格的橫向自動分頁 rE-大單元格分頁自動縮放打印指定縮放比例打印零邊距打印預(yù)覽時提示生成監(jiān)視打印任務(wù)狀態(tài)手動雙面打印模式自動雙面打印模式打印份數(shù)控制打印指定頁監(jiān)聽打印頁數(shù)事件顯示頁面設(shè)置對話框后打印選擇打印機進行打印選擇打印機,紙張類型,邊距進行打印縱橫打印(有些頁縱向打印,有些橫打)Excel導(dǎo)出"e.'J打印非HTML文檔(*.doc,*.xls,*.ppt,*.pdf)附件方式打印非 HTML文檔(*.doc,*.xls,*.ppt,*.pdf)打印TIFF文件設(shè)置圖文并茂的頁腳頁眉個性化的頁腳頁眉(首頁不打印頁腳頁眉)一次打印中的頁號分組指定顯示的起始頁號取本地MAC地址取CPU序列號用控件設(shè)置IE打印背景使用插件,使jatoolsPrinter 支持firefox、chrome、safari支持繁體中文、英文、日文等界面附錄:API參考手冊簡介:jatoolsPrinter 是一款實現(xiàn)網(wǎng)頁套打的專門工具。作為 web應(yīng)用開發(fā)者,我們經(jīng)常會遇到在瀏覽器中打印報表、票據(jù)的需求,瀏覽器本身 提供的打印功能一般不能滿足這些需求,如精確分頁,套打等。jatoolsPrinter 正是為了解決這些需求而專門研發(fā)的。使用jatoolsPrinter 可以最大限度地實現(xiàn)對 web頁面的打印控制,比方,輸岀到哪個打印機,什么紙張類型,是否打印附件等。設(shè)置圖文并茂的頁眉、頁腳,自動分頁或程序分頁。你也可以利用jatoolsPrinter 隨心所欲地定制岀自己的打印設(shè)置界面,更好地滿足工程需求。jatoolsPrinter 不同于報表工具,它只解決 web客戶端的html頁面的打印問題,至于這些頁面如何生成,格式怎樣需要你自己做后端的開發(fā)(使用 jsp,asp,或php等),因此,你可以有很大的自由度來定制格式。jatoolsPrinter 也沒有可視化的票據(jù)或報表設(shè)計工具, 而一般報表工具都有可視化的報表設(shè)計器。 jatoolsPrinter 只需要在web效勞器的一個目錄中,放置一個控件文件即算配置完成,而報表工具一般在效勞端需要配置報表效勞引擎。jatoolsPrinter 是本公司報表產(chǎn)品杰表的一個組件, 2006年起單獨開展成品。如果你需要可視化的套打設(shè)計工具、各種格式 (Excel,pdf)導(dǎo)岀、表格無折斷分頁等更為強大的功能,建議你采用本公司的報表產(chǎn)品,杰表 .2022。安裝:效勞端:可以是任何操作系統(tǒng),任何 web效勞器,比方iis、tomcat、weblogic、websphere等??蛻舳耍簑indows 操作系統(tǒng)〔除win95/98 夕卜〕,InternetExplorer5.5 及以上版本。效勞端先來看一個例如網(wǎng)頁 test.htm<html>vOBJECTID="jatoolsPrinter"CLASSID="CLSID:B43D3361-D075-4BE2-87FE-057188254255"codebase="jatoolsPrinter.cab#version=5,7,0,0">v/OBJECT></html>如果你訪問該網(wǎng)頁的地址是 :://abc/print/test.htm貝0你必須將jatoolsPrinter.cab放在://abc/print/jatoolsPrinter.cab 可以訪問到的地方。總之,jatoolsPrinter.cab 位置,需要根據(jù)當(dāng)前網(wǎng)頁路徑與 codebase屬性,來確定。請體會以下例如:

例一、網(wǎng)頁地址:://abc/print/test.htmcodebase屬性: xyz/jatoolsPrinter.cab#version=5,7,0,0jatoolsPrinter.cab地址:://abc/print/xyz/jatoolsPrinter.cab例二、網(wǎng)頁地址:://abc/print/test.jspcodebase屬性: /jatoolsPrinter.cab#version=5,7,0,0jatoolsPrinter.cab地址: ://abc/jatoolsPrinter.cab瀏覽器端當(dāng)你訪問使用打印控件的網(wǎng)頁時,瀏覽器將從效勞器上下載控件,自動安裝到 ie中。當(dāng)然,如果你的IE平安設(shè)置過高,也可能不能自動安裝,這時,你需要改變 IE的平安設(shè)置,或進行離線安裝。如果你需要離線安裝,可以向我們申請離線安裝包。 IE平安設(shè)置方法如下:IE瀏覽器->工具->internet選項->平安IE瀏覽器->工具->internet狀態(tài)。如以下圖所示:Internet妾全|隱私丨內(nèi)容I3I程序I高級諸為年同區(qū)威芥-議區(qū)城的安臺自:Internet妾全|隱私丨內(nèi)容I3I程序I高級諸為年同區(qū)威芥-議區(qū)城的安臺自:?ra注:jatoolsPrinter4.0 以后的版本,都經(jīng)過微軟認(rèn)證的簽名,因此,多數(shù)情況下無須設(shè)置平安屬性。IE快速入門我們先來設(shè)計一個 web頁面,如下所示:<html><head><title>我的第一個打印文檔</title></head>vbodybgcolor="#eOeOeO"><divid='page1'style='background:#ffffff;margin:10;width:270;height:450;float:left'> 發(fā)票1金額:80</div><divid='page2'style='background:#ffffff;margin:10;width:270;height:450;float:left'> 發(fā)票2金額:100</div></body></html>在這個文檔中,有兩個div對象,假設(shè)每個div中包括一張要打印的發(fā)票, 現(xiàn)在要求是把這兩張發(fā)票打印岀來,而且,一張發(fā)票占據(jù)一頁,如果你使用 ie自帶的打印菜單來打印,有可能只打印一頁,有可能打印超過兩頁,有可能發(fā)票打印到一半時就分頁, 總之,如何分頁取決于打印紙張的大小,及發(fā)票的大小,你不能控制頁數(shù)及分頁位置。那么, jatoolsPrinter 是如何處理這樣的需求的呢?首先,我們在頁面中插入這個控件,如下所示<html><head><title> 我的第一個打印文檔</title><!-- 插入打印控件-->vOBJECTID="jatoolsPrinter"CLASSID="CLSID:B43D3361-D075-4BE2-87FE-057188254255"codebase="jatoolsPrinter.cab#version=5,7,0,0"></OBJECT>

v/head>vbodybgcolor="#eOeOeO"><divid='page1發(fā)票1發(fā)票發(fā)票1發(fā)票2金額:80</div><divid='page2'style='background:#ffffff;margin:10;width:270;height:450;float:left'>金額:100</div></body></html>其次,調(diào)用控件的print方法實現(xiàn)打印,如下所示:functiondoPrint(){myDoc={documents:document;// 要打印的div對象在本文檔中,控件將從本文檔中的id為'page1'的div對象,作為首頁打印//id 為'page2' 的作為第二頁打印};間oolsPrinter.print(myDoc,false);// 直接打印,不彈出打印機設(shè)置對話框}由上可見,你打印假設(shè)干 div對象時,需要告訴控件,這些 div們所屬的文檔對象(html的document對象),另外,這些div對象的id,也需要按 ’page+序號’的規(guī)那么命名,序號從 1開始計,也就是說,id為'page1'的div對象,總是作為首頁打印。 這些設(shè)置使用一個 javascript對象來描述,也就是上面的 myDoc對象,下面是完整的html代碼:<html><head><title> 我的第一個打印文檔</title><!-- 插入打印控件-->

vOBJECTID="jatoolsPrinter"CLASSID="CLSID:B43D3361-D075-4BE2-87FE-057188254255"codebase="jatoolsPrinter.cab#version=5,7,0,0">v/OBJECT><script>functiondoPrint(){myDoc={documents:document,// 要打印的div對象在本文檔中,控件將從本文檔中的id為'pagel'的div對象,作為首頁打印//id 為'page2'的作為第二頁打印copyrights:' 杰創(chuàng)軟件擁有版權(quán) jatools' // 版權(quán)聲明,必須};jatoolsPrinter.print(myDoc,false);// 直接打印,不彈出打印機設(shè)置對話框}</script></head>vbodybgcolor="#e0e0e0"><divid='page1'style='background:#ffffff;margin:10;width:270;height:450;float:left'> 發(fā)票1金額:80</div><divid='page2'style='background:#ffffff;margin:10;width:270;height:450;float:left'> 發(fā)票1金額:100</div>vinputtype="button"value=" 打印"onClick='doPrint()'></body></html>運行例如最后,有幾點需要說明:?1.控件在打印指定div對象時,如果紙張?zhí)〔粔虼蛴r,超岀局部將被截掉 (clip)如果你不想被截掉, 你可以使用自動分頁功能, 參照自動分頁打印, 如果是一個大表格,想分析打印,參照表格分析打印功能。 。?2.被指定的div中的內(nèi)容,可以是html任何可見對象,圖片,flash,或文本等等。? 3.控件打印時,邊距可設(shè),不設(shè)那么取打印機默認(rèn)值。

div的id必須連續(xù),如果你的 div,存在’pagel'、’page2'、’page4',而不存在'page3',那么控件只打印前兩頁,’page4'不會被打印。div對象在頁面中的位置,可以是隨意的,比方, pagel顯示在page2后面,也是合法的。指定的div會被打印,沒被指定的 html元素將不會被打印,比方,本例如中的 打印'按鈕,不會被打印。copyrights 屬性是版權(quán)信息,必須寫。一個div打印成一頁,這種分頁方法稱之為預(yù)分頁方式,或稱為套打分頁方式。除此之外,控件也支持自動分頁方式,即可以將一個內(nèi)容較多的網(wǎng)頁,由控件自動按紙張大小來分頁,方法是使用 autoBreakPage 屬性,具體參照下文。控件打印時,將不會打印 ie默認(rèn)的頁腳頁眉〔ie通常在上面顯示網(wǎng)頁的網(wǎng)址,網(wǎng)頁標(biāo)題等〕,多數(shù)情況下是不必要的,當(dāng)然,如果你確實需要頁腳頁眉,你也可以自己定義,具體方法參照下文。最簡單的打印預(yù)覽F面是一個最簡單的打印,打印按默認(rèn)設(shè)置進行F面是一個最簡單的打印,打印按默認(rèn)設(shè)置進行運行此例如//打印文檔對象varmyDoc={documents:document,// 打印頁面(div)們在本文檔中copyrights:' 杰創(chuàng)軟件擁有版權(quán)jatools'// 版權(quán)聲明必須};jatoolsPrinter.print(myDoc,false);打印前設(shè)置打印參數(shù)運行此例如運行此例如//打印文檔對象varmyDoc={settings:{// 如果想使用默認(rèn)打印機,不需要設(shè)置//printer:' 聯(lián)想激打’,// 指定紙張的高寬以十分之一毫米為單位 ,本設(shè)置實際是指定為a4大小paperWidth:2100,paperHeight:2970,// 指定打打印方向為橫向,1/2=縱向/橫向orientation:2},documents:document,// 打印頁面(div) 們在本文檔中copyrights:' 杰創(chuàng)軟件擁有版權(quán) jatools'// 版權(quán)聲明必須};保存打印時的打印參數(shù)運行此例如可以保存運行此例如//打印文檔對象varmyDoc={//待保存的打印設(shè)置id,打印后將被保存在注冊表中,//下一次啟動相同值的 settingsID,打印文檔時,//控件將用保存的參數(shù),自動設(shè)置打印機settingslD:"mysettings1",documents:document,copyrights:' 杰創(chuàng)軟件擁有版權(quán) jatools'};為什么需要保存設(shè)置功能保存設(shè)置功能,通常用在以下兩種情況:〔1〕一個套打系統(tǒng),由于各客戶端打印機不同,或者進紙盒的位置不同,或者其他原因,可能引起打印出來的票據(jù)位置發(fā)生偏移, 用戶希望能根據(jù)自己打印機的狀況, 自行調(diào)整邊距以糾正位置,但不希望每次打印前,都進行一次手工調(diào)整?!?〕一個客戶端配置了多臺打印機,分別用于打印不同類型的文檔,用戶不希望每次打印一個文檔前,選擇一次打印機;對于第一種情況,你可以這樣解決:頁面中設(shè)置兩個按鈕,一個 〞直接打印〞,一個〞打印預(yù)覽〞;當(dāng)客戶發(fā)現(xiàn)位置有偏移時,可以點擊 “打印預(yù)覽“按鈕,調(diào)整左、上邊距,并打印這個頁面;如果發(fā)現(xiàn)位置還不理想,那么重復(fù)第 2步,如果正確,那么下一次打印這個票據(jù)時,只需點擊 “直接打印“即可保證位置正確。對于第二種多種打印機的情況,你可以這樣解決:頁面中設(shè)置兩個按鈕,一個 〞直接打印〞,一個〞打印預(yù)覽〞;第一次打印時,可以點擊 “打印預(yù)覽“按鈕,選擇你想要的打印機進行打?。回悜砸淮未蛴∵@個票據(jù)時,只需點擊 “直接打印“即可保證輸岀到正確的打印機。提一點建議:因為“打印預(yù)覽“按鈕不常用,最好不要跟“直接打印“按鈕并排放在一起,以防止干擾。保存設(shè)置參數(shù)的工作原理是怎樣的 ?控件是如何保存設(shè)置參數(shù)的, 有些用戶感覺困惑,下面介紹一下保存與加載打印參數(shù)的工作原理。保存設(shè)置參數(shù)原理:客戶打印一個文檔到打印機后;控件觸發(fā)打印完成事件;控件響應(yīng)打印完成事件, 查詢本次打印是否有myDoc.settingsID 屬性,如果有,那么保存本次打印的配置參數(shù)到注冊表 〔如果注冊表中存在該id設(shè)置,那么替換以前設(shè)置〕。所以,保存打印參數(shù)的前提是:已經(jīng)輸岀到打印機,并且設(shè)置了 myDoc.settingsID 。有些用戶,只在控件的預(yù)覽窗口中設(shè)置了邊距等,而不實際打印,這樣,控件是不會保存你的設(shè)置的。加載打印參數(shù)原理:客戶在預(yù)覽或打印前,控件查詢是否有 myDoc.settingsID 屬性;如果有myDoc.settingsID 屬性,控件嘗試從注冊表中讀入該 id相關(guān)的配置參數(shù),如果存在,那么用該配置參數(shù)來設(shè)置打印機〔即忽略 myDoc.settings 里的設(shè)置〕,轉(zhuǎn)第4步;根據(jù)用戶的myDoc.settings 里的設(shè)置,設(shè)置打印參數(shù);根據(jù)設(shè)置,啟動打印或打印預(yù)覽。第一次打印用當(dāng)前配置,后續(xù)打印用最后一次打印配置運行此例如//打印文檔對象varmyDoc={settings*// 當(dāng)前設(shè)置//printer:' 聯(lián)想激打’,paperWidth:2100,paperHeight:2970,orientation:2},//第一次打印時,注冊表中沒有 ‘mysettings2'的打印參數(shù)//所以使用上面指定的參數(shù)//打印后,控件自動將最后一次打印設(shè)置保存//后續(xù)打印時將用注冊表中的設(shè)置,來自動配置打印機//上述的settings 將被忽略settingsID:"mysettings2",documents:document,copyrights:' 杰創(chuàng)軟件擁有版權(quán) jatools'};批量打印文檔運行此例如注意,批量打印時,而且打印文檔數(shù)超過一個,只能進行無提示的直接打印操作。//打印文檔對象varmyDoc={//批量打印時,需要用數(shù)組來指定打印文檔

//文檔頁可以在一個document對象中,也可以在url指定的一個文檔中documents:newArray(document,// 打印頁面(div) 們在正顯示在本文檔中指定的文檔中'attache1.htm',// 打印頁面(div)們在一個url指定的文檔中'attache2.htm')copyrights:' 杰創(chuàng)軟件擁有版權(quán)jatools'// 版權(quán)聲明必須};多個文檔共存在同一web多個文檔共存在同一web頁面中,區(qū)別打印運行此例如//打印文檔對象varmyDoc={documents:document,//在同一頁面中,有多個可打印文檔,他們可以用//pagePrefix 屬性來區(qū)別//pagePrefix 屬性+page+頁序號構(gòu)成可打印div的id,//如前綴為’reports, 那么找到以'report1page1'為id的//div 作為文檔首頁//該屬性,默認(rèn)值為空pagePrefix:whichreport.value,// 本例中,可能是'reportl'或'report2'copyrights:' 杰創(chuàng)軟件擁有版權(quán) jatools'};運行此例如//打印文檔對象varmyDoc={//文檔頁可以在url指定的一個文檔中,用數(shù)組指定打印文檔documents:newArray('basic.htm'),copyrights:' 杰創(chuàng)軟件擁有版權(quán)jatools'// 版權(quán)聲明必須};打印隱藏對象你可以使用屬性 classesReplacedWhenPrint ,將一個對象在顯示時定義為不可見,在打印或打印預(yù)覽時,定義為可見,這通過預(yù)定一個 css類實現(xiàn)。如下所示。運行此例如<style>.only_for_print{display:none}</style>//左面是兩個隱藏的頁<divid=page1class='only_for_print'...<divid=page2class='only_for_print'...打印印文檔對象varmyDoc={//打印時,only_for_print 取值為顯示classesReplacedWhenPrint:newArray('.only_for_print{display:block}'),};僅在預(yù)覽時可見,不輸出到打印機的套打底 圖通過特殊的樣式類 screen-only ,配合enableScreenOnlyClass 屬性,你可以控制所有可視化元素要求其僅在預(yù)覽時可見,如以下圖示。 運行此例如//打印文檔對象varmyDoc={enableScreenOnlyClass:true// 為了使screen-only 起作用,必須設(shè)置enableScreenOnlyClass 為true經(jīng)此設(shè)置,引用screen-only 樣式類的對象,只在顯示或預(yù)覽時可見,打印時不可見.};<imgclass='screen-only'src='background.jpg'alt=' 本圖片只在預(yù)覽中可見'><divclass='screen-onlytitle'> 本層中的內(nèi)容只在打印預(yù)覽時可見 </div>打印時樣式類的自動插入〔打印時樣式類的自動插入〔實現(xiàn)不打印表格線等 〕運行此例如假設(shè)有這樣的需求,套打票據(jù)是一個表格,且表格線已經(jīng)印在上面。但你不想將票據(jù)底圖按上一節(jié)所說,設(shè)置在打印頁面上,而是輸岀打印頁面時,也同時設(shè)置表格線,僅在打印時,讓控件自動隱去表格線。如何做到?方法是利用打印樣式類自動插入功能,該功能在控件打印時,會自動在頁面的父對象中,插入一個jatools-printing樣式類,類似這樣:

vdivclass='jatools-printing'><divid=page1>...v/div>v/div>有了這個自動插入的樣式類,以上不打印表格線的需求,就可以很方便實現(xiàn)了,方法如下:如果你有一個表格,如下所示:vtableid='sample'>vtr>vtd>...v/table>為使打印頁面在顯示和打印預(yù)覽時,顯示表格線,需要加上邊框樣式,類似這樣 :vstyle>#sampletd{border:solid1pxsolid}v/style>為使打印時表格線不可見,增加以下粗線局部,即可:vstyle>>#sampletd{border:solid1pxblack}.jatools-printing#sampletd{border:none;}v/style>原理是,當(dāng)控件打印時,sample表格有一個帶樣式類.jatools-printing的祖先對象,因此,上一行有表格線的樣式會被下一行沒表格線的樣式所覆蓋,也就是打印時,不顯示表格線了。實際上,也許你已經(jīng)體會到,通過本功用可以精細控制打印對象在預(yù)覽時和打印時的不同樣式,不僅僅是本例中的對表格線的控制。vstyle>#sampletd{border:solid1pxblack}.jatools-printing#sampletd{border:none;}v/style>vtableid='sample'>vtr>vtd>...v/table>樣式文件〔*css〕的顯式導(dǎo)入有些應(yīng)用,往往需要引入龐大的css文件,尤其是一些使用開發(fā)框架開發(fā)的應(yīng)用,比方 Oracle的ADF。如果這樣大的css放到內(nèi)存中,讓打印控件來解析,必須會影響到控件的打印效率,因此,我們這里推薦用戶用顯式的 css引入方法,可減輕控件對 css的解析負擔(dān),從而大大提

高控件的打印速度。要使用顯式的 css文件導(dǎo)入功能,只需要設(shè)置 importedStyle 屬性即可,運行此例如functiondoPrint(){myDoc={...documents:document,importedStyle:['a.css'],//可同時引入多個css,可以是相對路徑,也可以是絕對路徑};jatoolsPrinter.print(myDoc,false);}運行此例如打印結(jié)束后提交數(shù)據(jù)運行此例如F面一個例如,意圖是在打印成功后,將打印數(shù)據(jù)提交到效勞器保存。functiondoPrint(){myDoc={...documents:document,};myDoc.done=function(err){if(!err)myform.submit();// 提交表單elsealert(err);

}jatoolsPrinter.print(myDoc,false);// 直接打印,不彈出打印機設(shè)置對話框}你可以在打印結(jié)束時,讓控件自動調(diào)用一個腳本方法,回調(diào)方法必須通過打印對象的done屬性來指定。在打印結(jié)束后,你可以通過該方法的 err參數(shù),來判斷打印是否成功,err為空,那么打印成功,非空在打印失敗,err表示錯誤信息。為什么要使用回調(diào)方法不使用回調(diào)方法,按下面的代碼運行可以嗎?答復(fù)是不可以!下面的代碼錯誤。functiondoPrint(){myDoc={...documents:document,};jatoolsPrinter.print(myDoc,false);//直接打印,不彈岀打印機設(shè)置對話框myform.submit(); //極端錯誤}因為不管三七二^一,就提交了表單,提交后,當(dāng)前窗口的 document就會被新的文檔替換,而打印控件對原文檔還沒有打印完,這時就會經(jīng)常岀現(xiàn)如下錯誤信息。當(dāng)前頁的腳本發(fā)生楮復(fù).行:宇符:392請誤:稅宥權(quán)限代碼:UH.'rei;//j dil/TI.him是畫覽蠶花飲頁頁上運冇腳本程序?是哲打印后關(guān)閉窗口在回調(diào)方法(done)中調(diào)用window.close()即可;參照演示運行此例如可視化設(shè)計套打在web套打程序的開發(fā)中,最煩瑣的事情是打印內(nèi)容與票據(jù)要保持一致,不能移位。在以前的版本中,如果用戶想設(shè)計套打模板,必須通過網(wǎng)頁設(shè)計工具做好網(wǎng)頁, 然后,放到杰表控件中來打印,如果發(fā)現(xiàn)打印內(nèi)容的位置有偏差,再在網(wǎng)頁設(shè)計工具中調(diào)整,然后再放到控件中,如此反復(fù)屢次,效率極低。現(xiàn)在有了可視化設(shè)計功能,可以使用戶在控件中,就能調(diào)整位置,不僅如此,由于控件中指定位置,是在真實的、可視化的打印環(huán)境中,使用戶不必考慮邊距的問題,做到完全的所見即所得,可大大提升套打設(shè)計的效率。 更多內(nèi)容…打印內(nèi)容相對位置的事后調(diào)整及保存在web套打程序的開發(fā)過程中,你可能會發(fā)現(xiàn),即使是同一套打網(wǎng)頁,在不同的打印機中,打印岀來的相對位置,也有差異,有的打印機打印岀來的內(nèi)容湊得緊些, 有的那么離得開些,這種偏差不能通過設(shè)置打印機邊距的方式進行調(diào)整。 借助杰表打印控件的可視化設(shè)計功能, 使用戶可以根據(jù)自己的打印機狀況,自行調(diào)整打印內(nèi)容的位置,并保存到注冊表, 下次打印時,自動根據(jù)自設(shè)的位置進行打印。 這種微調(diào),不會影響到其他打印機,這對有大量前臺打印,并有不同類型打印機打印同一種票據(jù)的場合,非常實用。 更多內(nèi)容…連續(xù)打印的套打偏移校正因連續(xù)打印導(dǎo)致套打上下偏移的問題,是套打程序設(shè)計中的常見問題,如下圖:魁通速遞、It/胃"側(cè)xIjfX機州魁通速遞、It/胃"側(cè)xIjfX機州浙江9通速站rtt>xpwft<>f12e文一西號西湖丈甕第一張〔正常〕 第五十張〔向下偏移1.2cm〕導(dǎo)致偏移的原因是什么呢?一種原因,是打印紙張高度設(shè)置得不對,只要根據(jù)誤差,調(diào)整紙張高度就行了另一種原因,是打印機走紙不夠精準(zhǔn),少打幾頁還看不岀有啥問題,但連續(xù)打印后,因為誤差累積起來,打印到10幾張時,就很明顯了,如果打印到 100多張,上千張,必然謬之毫厘,差之千里了。一般地,在打印多頁后,如果出現(xiàn)向下偏移的情況,說明紙張高度設(shè)置過大了,調(diào)小一點即可,如果出現(xiàn)向上偏移的情況,說明紙張高度過小,調(diào)大一點即可。但這里有個壞消息,比方,進過測試,發(fā)現(xiàn)如果紙張高度設(shè)置為200.1mm 向下偏移,如果設(shè)成200.0mm向上偏移,很簡單,設(shè)成它們倆的中間值:200.05mm 試試。遺憾的是,windows不接受這個值,因為windows能接受的紙張高度,其精度只能到達0.1mm,即使你設(shè)置了這個中間值,打印機可能仍然以兩值中的一個進行打印,也就是說,你設(shè)了這個中間值,打印仍然會存在偏移!碰到這種情況,我們做程序的也只能建議用戶,換一臺精度高一點的打印機,或者建議一次不要打印太多。好消息是,本控件針對這個棘手的問題,提岀了更有建設(shè)性的方法,那就是,在連續(xù)的票據(jù)打印過程中,插入假設(shè)干校正頁的方法來進行偏移糾正,此方法可圖示如下:正常頁,臥號以100?^度打印Eg:"■IIIIIUI 正常頁,臥號以100?^度打印Eg:"■IIIIIUI 1枝正亙?以関用皿高度打印吒_弋舌 >-■■ 上.亂下聲隔五張.插入一個校正頁控件啟動一個打印任務(wù),當(dāng)打印完幾張正常高度的票據(jù)后,打印一張用來糾偏的、特別高度的票據(jù)〔以下稱之為校正頁〕,這樣可以降低對打印機走紙精度的要求,也到達了糾偏的目的,此方法簡單粗暴,直接有效,:〕下面介紹如何設(shè)置一個可插入校正頁的打印任務(wù):先測量出,票據(jù)的實際高度,比方 120mm〔寬〕*100mm〔高〕;按所得票據(jù)大小,設(shè)置自定義紙張,如下所示:varmyDoc={settings*paperWidth:1200,// 以1/10毫米為單位paperHeight:1000},settingsID: 'mydoc1' // 必須設(shè)置一個唯一id號當(dāng)發(fā)現(xiàn)有連續(xù)偏移時,只要調(diào)用控件的 setupNormalOffset() 方法,設(shè)置相應(yīng)的校正參數(shù)即可,如下所示:jatoolsPrinter.setupNormalOffset( ‘mydocl');// 唯一參數(shù),標(biāo)識對哪一個打印任務(wù)進行校正設(shè)定。此方法將使控件彈岀如下對話框:[連續(xù)打印IS移橙正設(shè)置你打印了參少張共偏移了參少奎米(向上偏移為負)<隔幾張柿入一個校正頁5012.0— |51 去除 礪定 ,1 取涓你打印了多少張:表示你用來測試的頁數(shù),測試頁數(shù)越多,誤差越大,校正效果越好。共偏移了多少毫米(向上偏移為負) :表示你經(jīng)過上一參數(shù)連續(xù)打印后,第一頁與最后一頁的偏移距離,以毫米為單位,當(dāng)向下偏移時,設(shè)置為正,反之為負,也可以設(shè)置一個小數(shù)位。每隔幾張插入一個校正頁:表示校正頁的插入頻度。此參數(shù)建議在 5?15之間為好。去除:可能換了好的打印機,不需要校正了,那就采用此按鈕,去除校正設(shè)置。確定:設(shè)置完了,保存。取消:即不保存,也不去除,退出。如果你設(shè)置了校正參數(shù),按確定以后,控件將在本地注冊表中保存這些參數(shù), 當(dāng)下一次myDoc.settingsID為〞mydocl'的打印任務(wù)啟動時,控件將按這些參數(shù)自動插入校正頁。 另外,你需要注意:因為校正參數(shù)是按settingsID來保存的,所以不會干擾到其他打印任務(wù)。因為校正參數(shù)是保存在用戶的本地注冊表中,所以某一個用戶的校正設(shè)置,不會影響到其他用戶的。下面是打印與校正設(shè)置的局部代碼:運行此例如functiondoPrint()paperWidth:1200,paperHeight:1000

},settingslD:'mydoc1',documents:document,copyrights:' 杰創(chuàng)軟件擁有版權(quán) jatools'}jatoolsPrinter.print(myDoc,false);// 直接打印}functionfunctiondoNormalOffset(){jatoolsPrinter.setupNormalOffset('mydoc1');// 設(shè)置校正參數(shù)}<intputtype= ' button ' value=' 打印'onclick='doPrint()'><intputtype= ' button ' value=' 偏移校正設(shè)置'onclick=' doNormalOffset() '>行文至此,這個方案還是有點不夠完美,因為,代碼中岀現(xiàn)兩個按鈕,一個是打印,一個是偏移校正,這個偏移校正按鈕,對于大多數(shù)不存在偏移問題的用戶來說,可能永遠用不上,即使有少數(shù)用戶存在偏移問題,也只需要設(shè)置一次,就可以了。這個按鈕有點多余,我們來改造一下上面的代碼,如下:運行此例如functiondoPrint(){I~if(window.event.shiftKey){jatoolsPrinter.setupNormalOffset('mydoc1');// 設(shè)置校正參數(shù)!*}elseI """""4{varmyDoc={settings:{paperWidth:1200,paperHeight:1000},settingslD:'mydoc1',documents:document,// 打印頁面(div) 們在本文檔中copyrights:' 杰創(chuàng)軟件擁有版權(quán) jatools'// 版權(quán)聲明必須};jatoolsPrinter.print(myDoc,false);// 直接打印}vintputtype='button'value='打印'onclick='doPrint()'>上述代碼,刪除了用于校正的按鈕,但 doPrint代碼里,參加了是否按下 shift鍵的判斷,如果用戶在按下打印按鈕的同時,也按了shift,那么調(diào)用控件的校正設(shè)定方法,否那么,就以正常打印處理。 這樣,作為程序開發(fā)人員,只需要當(dāng)用戶發(fā)現(xiàn)有連續(xù)偏移時,才告訴他使用這個方法,來校正偏差。調(diào)整后的套打位置信息保存到效勞端運行此例如下載此例如代碼上一功能〞打印內(nèi)容相對位置的事后調(diào)整及保存〞只將位置微調(diào)后的信息保存到本地注冊表,所以某個用戶的位置微調(diào)不會影響到其他用戶, 而本功能可以使調(diào)整后的位置信息保存到效勞端, 因此某個用戶的位置微調(diào)將影響到所有其他客戶。 這在需要由專人負責(zé)調(diào)整套打位置的場合,非常有用。實現(xiàn)此功能的原理,是監(jiān)聽用戶微調(diào)后確實定按鈕事件,你可以在此事件代碼中,得到用戶的最新位置信息,再通過ajax傳遞到后臺保存,用戶在下一次請求打印頁面時,在頁面的 <style>中參加該位置信息。下面以jsp語言為例說明本功能,如下所示,參加監(jiān)聽事件只需要設(shè)置 myDoc.dragDesigner.ok為一個函數(shù)即可,當(dāng)用戶點擊確定時,控件將調(diào)用這個方法,并傳入兩個參數(shù), sid和styles.sid就是你設(shè)置的settingsID屬性.styles是一個javascript對象,形式如{f1:'top:200;left:200',f2:'top:100;left:300'} ,本例是將此對象轉(zhuǎn)換成 css字符串后,ajax到后臺.remotelayout.htm<%Stringstyles=(String)application.getAttribute("globalcheque");if(styles==null){styles="";}%><style><%=styles%>//保存到效勞端的位置信息,成為 style 的一局部,從而影響到后面的 html元素.<%=styles%>//在拖放設(shè)計完畢后點擊的信息返回的格式入注在拖放設(shè)計完畢后點擊的信息返回的格式入注//轉(zhuǎn)換成.f1{left:533;top:422}.f2{left:124;top:146}functiondoPrint(){myDoc={settings:{paperWidth:2500,paperHeight:1800,orientation:2},documents:document,dragDesigner:{viewSource:false,ok:function(sid,styles){ //確定按鈕會調(diào)用此函數(shù),獲取到sid和style的信息/* styles={f1:'top:200;left:200',f2:'top:100;left:300'}轉(zhuǎn)換成:div#f1{top:200;left:200}div#f2{top:100;left:300};*/varnewstyles=''; //style釋中的形式,這個時候我們就對 style的內(nèi)容進行處理,for(varainstyles)div#f1{top:200;left:200} 這樣的形式{newstyles+='div#'+a+'{'+styles[a]+'}\n:$.ajax({url:'://localhost:8080/jatools/globalstyles.jsp',拖放的信息提交到后進行保存。type:'POST',data:{sid:sid,styles:newstyles //style 的信息提交到后臺},error:function(){alert(' 保存出錯!');},success:function(){alert(〞 調(diào)整后的位置,已經(jīng)保存到效勞端 「');}});}},settingsID:'globalcheque',copyrights:" 杰創(chuàng)軟件擁有版權(quán) jatools"}jatoolsPrinter.printPreview(myDoc);}//將將sid和globalstyles.jsp本文件,僅僅響應(yīng)客戶端位置信息的 ajax遞交,并將它緩存在全局 session中以備取用。你可以根據(jù)需要,保存在其他機制中,比方,數(shù)據(jù)庫,或本地文件等。<%Stringsid=request.getParameter("sid");Stringstyles=request.getParameter("styles");remotelayout.htmapplication.setAttribute(sid,styles);%>使用自動分頁運行此例如設(shè)置autoBreakPage屬性為true運行此例如表格自動分頁,表頭每頁可見運行此例如如果你有一個行數(shù)較多的表格, 想分頁打印,那么,僅僅使用上節(jié)介紹的自動分頁功能是不夠的,因為自動分頁功能,會使表格線在折頁處,岀現(xiàn)被折斷的情況,如以下圖所示:KS3&3/E0362空調(diào)怏達空調(diào)快連連藍港東溫州16;5214;4707:00Qrr:4314:^713:56杭憂溫州杭州0T:4322X013:58K33著■/腋能 辭賤惋押 n感蘿打印控件巧擊臨血購眾農(nóng)商葫#訪問ME8384空調(diào)快速溫州杭州14:?51E1520:441E15溫州20:4419:55這個問題在InternetExplorer 打印中,你也經(jīng)常碰到,微軟也沒有給岀一個徹底的解決方法。為解決這個問題,本控件采用動態(tài)分頁技術(shù),引入 autoBreakTable屬性,來防止此種現(xiàn)象的發(fā)生。以下是使用autoBreakPage 屬性后的不斷線分頁效果:上阿冋11:4513:03¥1州13:031)56£5上海南13:1214:3?金華西15:53車次列車類型貽發(fā)站用控件礙瀬fi口怕「'試燮%暦汁或龍發(fā)車時1回動車爼上海南13;0714:25怖州14:2511.3:2113:21上海雨1亠11114:44代碼如下所示:myDoc={...};〃autoBreakTable='break-table' 需要自動折頁的表格idvdivid=page1autoBreakTable='break-table'><h1class='first-only'> 工資表</h1> // 所有只想在第一頁中出現(xiàn)的對象,需要設(shè)置class屬性為first-only, 否那么每頁都顯示vtableheaderRows='1'id='break-table'>...</table> 〃headerRows='1'表格標(biāo)題行數(shù),標(biāo)題行將在每個頁面中岀現(xiàn)</div>頁內(nèi)多表自動分頁運行此例如如果一個pagediv內(nèi),有多個大大小小的表格,那么每一個表格都有可能被分頁,這時,那你只需要在該pagediv的autoBreakTable 屬性設(shè)置為'*'即可,如下所示:<divid='page1' autoBreakTable='*' ><table>…</table><table>…</table>該表格如果被分頁,第一行作為表頭,<tableheaderRows='1'>…</table>//該表格如果被分頁,第一行作為表頭,重復(fù)顯示<table>…</table><div>含合并單元格的表格自動分頁運行此例如表格的橫向自動分頁運行此例如如果需要打印一個有很多列的表格,因為紙張寬度有限,后面的列可能打印不岀來,怎么辦?一開始,我們建議用戶使用控件的自動縮放打印功能,但用戶的問題是,當(dāng)表格很寬時,這樣縮小后的頁面,打印岀來的字就太小,甚至可能無法識別。本功能專門解決此類需求。

尼007年冬孚迦卓世信茹it工作考槿〔XXXXflW廠}丘巧亍,ITI已t厳花菲三.1會訐弋4科灼三詩w豐flf'<t=r'爭二豪審盂10id宅"K垂盂2.1三-■-=7ft.. =上■犬常暨熬豪事醴V:-ID*?*1£*5?蚯"V:■蘭曼*■電六壬事4■空一-i-7.==專=.=::-筆扇■匸:二片或蟲皋■v!4.0?a厶寶*T=±:5■或V孚11二噸山岸i■?<-r*a*.^JtD.aH豈*二丸1出池M泌3.0■■■崟*片■?制I8?b1V壬?- W=*1Hk>-L73蘭些陀咗□亡■-■三咒七產(chǎn)丐空盂:丁三?!?V<<h▲口穆三上8廳£Z=三W—M電空?-心V"U L-T rV2云災(zāi)怔卩廳古I;七■巨妄―產(chǎn)諄=Tf「■佢■瞬rf^.i^TT:*賽口畀皿頭虹¥=.z=二Six5.?**WAY=.z豈孕壯.三靈"口皂三奇三置V椚環(huán)?.三心Afa■皀吏方三JtV欄用旳U色三亡議嚴(yán)*豐哎主G3=尹標(biāo)扌y柜苛=?忙會三忖孝嚴(yán)IS結(jié)畔信EGG5m電怖臺¥a云厝豈m走吋羽?咅濁g.a亦桶電崔卿m韋吟ww諭嵌tao睥*111it*-AS片鼻喇戸三耳?&*璉沖[SOW4.S-"4.Su燉rr-S〔聲三?牙£17片,*r5jfr4J-I目蠡<彌于姬時〕O0>-7r:;丈ft.a::匚-b.a于〞"肚t.a昭"囂桁fc.a需要打印的寬表格f=7N'T??譏需誌片產(chǎn)亍NX疔苛一嚴(yán)=工Fmstkww廠、嚴(yán)蒼訂=盍.J^k^.Lpzoo號年金卒畳jatifa屬需工作初住□?〔舊贈廠sell!=-iAjAW^CuMI孔JIIU鼻忑u亂'4■■-寧呂V懇議貝住*工工*1-■rztx^*“■二七口導(dǎo)丘土巴吊盤步 二■-;Wr?P王$*-口.HV■:徐尋叮仝壬;?17;哥nta-■=■=-.■r>r弓呼壬二匚亡5E==M之2二V:I菱占圧4f二<-1宅咅芒宜?=〒£_二件爭=t-S^^=S^?違工違1三NET運5=v^?JElUS護吐咤P輕土=ABA.9M-3戀斗^1::.-.(U蘭-士三;二靜茅它■土三--7~2T?弋曲=ijAri妊5" 上「才fJl?W畑島上i-S事土菱鼻時IET-jfrhfe?twl'?砧工二出二主 ■-IJ9:慈"B-.i#s■上s.e二量H.3盤uZfE.C-名二":程*V0亠J*■:廿4JQ*.c二=■憑諸呻士孟?丫込F一監(jiān)氣-muT竊舌匸匸三三==三戸=■亡二上亠上△■C苫三總工£耳匚一?:丘豈哼圧二壬咨卷宅捽產(chǎn)樣■塞璋冷mrm抿樗祖T吃七旳書桿:;亡壬H=.^—尋三:?-=S?=*=^.=嚴(yán)==JiiJIE■jT?乍冒?于電衆(zhòng)s-.e■a■jg5J3自動橫向分頁后的效果大單元格分頁運行此例如本功能可以實現(xiàn)單個單元格中,有多個,多層 html元素的自然分頁〔不斷縱橫邊框線,不在文字中間斷行〕,即使單元格內(nèi)容由 word轉(zhuǎn)換而來亦可。自動縮放打印有時一頁的內(nèi)容寬度或高度超過了, 選擇紙張的大小,這在正常情況下,超岀的局部就會被截去,如以下圖所示〔A〕所示,為了防止這種情況,控件允許你通過設(shè)置 fitToPage屬性,來縮小打印,這樣就可以在紙張過小的情況下,也能打印所有的頁面內(nèi)容,如以下圖 〔B〕所示。梳打蜩半杭州站韶笄甕過滅I軍時燙席食時間鯉過站發(fā)車時1間1034/1035空調(diào)普快金華西23-2201廖1036/1033空調(diào)普快洗陽化19.3004:3711S2/11E3晉快西安121&03-421154/1151杭州13:1213:121^46/1247晉快成鄱曲2102:301243/1245普快亍波13:2314:061271/1274空調(diào)晉快杭州匹a1£:59127ZX1273空調(diào)晉快15:3511:46iz7T/irr呂普快重慶北14.550Z:3B1口亞門燈5寧波13:411駅智門越空調(diào)晉怏杭州14.2C114:201344/1341空調(diào)晉快齊齊咱號10:0503'361531/1534年調(diào)普樓社昌16.2405.44〔A〕紙張寬度不夠,右邊的局部列被截去

樣犠弼站部芳經(jīng)趕爽軍嬲刻表V的W兩int7.*?=SST3?丘主時m£3"HM;41丈肯;;:=:z.J*J ■,:MT矗awCTtf4話*■'a*JJHiHD?:U吧一出K:C£『::&:比櫛13):12:、:二E9?:21:ursras:isi工:〞寧査3E.C;iBr■■-音戰(zhàn):D:53;&:□&oazoo■*.t謁;崙帶祎電無os;if■+?*?+ii:Si冊ii二.:??.=:14:41OB'4d:asa」15:<:xZlX3二汕:w£退寺性±4:話14:2D:=::±HiLiSli±e:*:^:54ja.貝L^5i/l=S[A8Di:£&追a:訂〞律算寶黑耆寧r*十s:tt津口:==:a;OS1Z:3EHtx卅05:5-『:勢:?:<?ga:aifltfHM:11蠱応1也枯占札unil曲:乳23JK£s^*R:±:A5&?■:z**出Z1M-=二41Hzs于卅2£:CSZa■TZS:-UB耳:£.9■SH(B)設(shè)置fitToPage為true,自動縮小打印,所有列可見運行此例如myDoc={...fitToPage:true,//};必要時縮放打印指定縮放比例打印運行此例如零邊距打印每個打印機都會有一個最小邊距 〔最小邊距因打印機不同而不同 〕,如果你在紙張設(shè)置對話框中,設(shè)置的邊距小于這個最小邊距, 那么,你的設(shè)置將不會起作用。 這使你在套打時會產(chǎn)生這樣的問題:你已經(jīng)設(shè)置了最小的左 〔上〕邊距,但打印岀來的東西,仍然是偏右 〔偏下〕。這時,你可以設(shè)置marginlgnored 屬性為true,在此模式下,控件將強制上、下、左、右邊距為零,忽略你所有的代碼或頁面設(shè)置對話框中的邊距設(shè)置。運行此例如myDoc={...marginIgnored:true,//強制上、下、左、右邊距為零settings:{//當(dāng)前設(shè)置topMargin:3//在marginIgnored為true 時,此處設(shè)置(top/right/left/bottom)Margin被忽略,所以不需設(shè)},};預(yù)覽時提示生成運行此例如當(dāng)你打印預(yù)覽時,控件會進行分頁運算,當(dāng)頁面較多時, 或自動分頁一個大表格時,這個過程可能會比擬耗時。這時,你可以使用本功能,使控件在分頁運算時顯示一個等待對話框。 如下所示正在生咸頁迪…如果將printPreview 方法中的第二個參數(shù)設(shè)為 true,即可顯示上述提示,如下所示顯示等待提示jatoolsPrinter.printPreview(myDoc,true);//

顯示等待提示為不顯示提示//jatoolsPrinter.printPreview(myDoc,false);//為不顯示提示//jatoolsPrinter.printPreview(myDoc);// 默認(rèn),為不顯示監(jiān)視打印任務(wù)狀態(tài)運行此例如你可以通過onState監(jiān)控正在打印的文檔狀態(tài),監(jiān)控代碼如下:myDoc={...onState:function(job){alert(job.status+job.statusText);}};當(dāng)打印狀態(tài)發(fā)生變化時,會觸發(fā)onState方法,你可以通過job參數(shù),取得當(dāng)前打印任務(wù)的相關(guān)屬性,比方,打印機(printerName)、文檔名(document)、打印狀態(tài)(status)、打印狀態(tài)描述(statusText)等,其中,job.status是數(shù)值型,你可以通過位運算,如下所示。functiongetStatusText(status){varJOB_STATUS_PAUSED=1;varJOB_STATUS_ERROR=2;varJOB_STATUS_DELETING=4;varJOB_STATUS_SPOOLING=8;varJOB_STATUS_PRINTING=16;varJOB_STATUS_OFFLINE=32;varJOB_STATUS_PAPEROUT=64;varJOB_STATUS_PRINTED=128;varJOB_STATUS_DELETED=148;varJOB_STATUS_BLOCKED_DEVQ=512;varJOB_STATUS_USER_INTERVENTION=1024;varJOB_STATUS_RESTART=2048;varmessage='';if(status&JOB_STATUS_PAUSED)message+="if(status&JOB_STATUS_ERROR)message+="if(status&JOB_STATUS_DELETING)message+="if(status&JOB_STATUS_SPOOLING)message+="if(status&JOB_STATUS_PRINTING)message+="if(status&JOB_STATUS_OFFLINE)message+="if(status&JOB_STATUS_PAPEROUT)message+="if(status&JOB_STATUS_PRINTED)message+="if(status&JOB_STATUS_DELETED)message+="if(status&JOB_STATUS_BLOCKED_DEVQ)message+=暫停-";岀錯-";正在刪除-";

進入隊列-";正在打印-";脫機-";沒紙了-";打印結(jié)束-";刪除-";堵了-";if(status&JOB_STATUS_USER_INTERVENTION)message+=用戶正在介入-";if(status&JOB_STATUS_RESTART)message+=重啟了-";returnmessage;}手動雙面打印模式先打奇數(shù)頁,再打偶數(shù)頁,設(shè)置 myDoc.settings.manualDuplex雙面打印的打印機,你可以使用這個屬性,來進行正反面打印。為true即可.對于不支持運行此例如自動雙面打印模式運行此例如functionprint(){vardoc={settings'duplex:2, // 按左側(cè)裝訂,即左右翻頁.上方裝訂//1: 不雙面打印,2:左側(cè)裝訂,3:上方裝訂},打印份數(shù)控制運行此例如functionprint(){vardoc={settings'copies:3, //打印份數(shù)copyway:'112233'// 打印順序默認(rèn)為123123},documents:document,copyrights:' 杰創(chuàng)軟件擁有版權(quán) jatools'}不顯示打印機選擇對話框進行打印jatoolsPrinter.print(doc,false);//不顯示打印機選擇對話框進行打印}和pageTo和pageTo打印總頁打印指定頁運行此例如functionprint(){varmyDoc={pageFrom:2, // 這里的pageFrom的從第二頁打印到第五頁pageTo:5,};jatoolsPrinter.print(doc,false);// 不顯示打印機選擇對話框進行打印}監(jiān)聽打印頁數(shù)事件運行此例如functionprint(){vardoc={onPagePrinted:function(i,size){//i 當(dāng)前打印頁size數(shù)varj=i+1; //i以0開始if(j==size)alert(' 所有打印結(jié)束,總計'+size+'頁');elsealert('第'+j+' 頁打印結(jié)束.')},documents:document,copyrights:' 杰創(chuàng)軟件擁有版權(quán) jatools'}jatoolsPrinter.print(doc,false);// 不顯示打印機選擇對話框進行打印}顯示頁面設(shè)置對話框后打印運行此例如functionprint(){varmySettings=jatoolsPrinter.showPageSetupDialog();if(mySettings){vardoc={settings:mySettings,documents:document,copyrights:' 杰創(chuàng)軟件擁有版權(quán) jatools'}jatoolsPrinter.print(doc,false);// 不顯示打印機選擇對話框進行打印}}選擇打印機進行打印運行此例如functionloadPrinters()

varprinters=jatoolsPrinter.getPrinters();// 打印機列表是字符串?dāng)?shù)組if(printers){for(i=0;i<printers.length;i++)printer_list.options[i+1]=newOption(printers[i],printers[i]);printer_list.options[0].selected=true;}}functionprint(){varmyDoc={settings:{printer:printer_list.value}, ?…}jatoolsPrinter.print(myDoc);}<selectname="printer_list"/>選擇打印機,紙張類型,邊距進行打印選擇打印機,選擇打印機,紙張類型,邊距進行打印運行此例如縱橫打印〔有些頁縱向打印,有些橫打 〕運行此例如有時,有些頁面適合縱向〔橫向〕打印,如果采用橫向〔縱向〕打印那么不美觀,或根本打印不全。這時,你可以采用本功能, 本功能允許在一次打印任務(wù)中, 設(shè)置有些頁縱向打印, 有些頁橫向打印。方法是使用myDoc.settings 的orientationMixed 屬性和打印頁面對象的orientation屬性,如下所示:

varmyDoc={settings'vdivid='page1'>縱打</div>vdivid='page1'>縱打</div>//采用控件的默認(rèn)打印方向orientationMixed:true,//此屬性通知控件,存在有縱有橫的打印頁面orientation".//設(shè)置控件的默認(rèn)打印方向,是縱向}...}<divid='page2'orientation='2'>orientation屬性,//縱打<divid='page2'orientation='2'>orientation屬性,//縱打,2為橫打<divid='page3'>縱打</div>就采用該屬性指定的方向打印,1為Excel導(dǎo)出運行此例如在日常開發(fā)中,經(jīng)常需要將 web頁面上的表格導(dǎo)岀成Excel,過去,我們自己在后臺實現(xiàn),現(xiàn)在借助杰表打印控件,也可以輕松導(dǎo)岀 Excel了。代碼如下://指定被輸岀表格的id,進行導(dǎo)岀jatoolsPrinter.exportAsExcel('mytable');//指定一個html的table 對象進行導(dǎo)出jatoolsPrinter.exportAsExcel(document.getElementByld('mytable'));

//導(dǎo)出到c:/mytest.xlsjatoolsPrinter.exportAsExcel('mytable','c:/mytest.xls');由上可見,控件方法 exportAsExcel(table,filepath) 接受兩個參數(shù):table:必選參數(shù),指定要導(dǎo)岀的表格,字符型時,表示 table的id,也可以是html對象。filepath:可選參數(shù),不指定時,控件將彈岀文件對話框,由用戶指定導(dǎo)岀文件,如果指定,那么不彈出文件對話框。由于控件導(dǎo)岀,使用的是excel機制,所以導(dǎo)岀前,有必要檢測一下,用戶系統(tǒng)是否安裝有 Excel,檢測的方法是isExcelInstalled ,如下所示:if(!jatoolsPrinter.isExcellnstalled()){alert(' 你的系統(tǒng)沒有安裝excel,不能導(dǎo)出!');return;}elsejatoolsPrinter.exportAsExcel('mytable');// 打印預(yù)覽打印非HTML文檔(*doc,*xls,*ppt,*pdf)運行此例如杰表打印控件除了可以打印純 HTML的web頁面外,也允許你打印 MSOffice、PDF文檔要打印這些文檔,你可以使用控件的 printDocument 方法,如下所示:jatoolsPrinter.printDocument("a.doc");//jatoolsPrinter.printDocument("a.doc");//jatoolsPrinter.printDocument("a.xls");//jatoolsPrinter.printDocument("a.ppt");//jatoolsPrinter.printDocument("a.pdf");//PDF必須安裝Word必須安裝Excel必須安裝PowerPoint文檔,必須已經(jīng)安裝AcrobatReader由上可見,控件可以打印的文檔類型有 :Word、Excel、PowerPoint、PDF,而且,在打印某類文檔時,客戶機必須已經(jīng)安裝相應(yīng)的軟件,如打印 *.doc文件,必須安裝有 MSWord軟件打印的文檔可以是動態(tài)的,也就是說,可以是加參數(shù)的url,用Word文檔做報表或套打模板時,用帶參數(shù)的url動態(tài)生成報表,是很常見的。如:'doc','xls','ppt','pdf'//動態(tài)文檔,需要有第二個參數(shù),來指明該文檔類型,可能的取值是'doc','xls','ppt','pdf'jatoolsPrinter.printDocument(');://jatools/a.doc?myname=『,‘doc'控件提供isPrintableFileType 方法來幫助你判斷客戶機是否安裝了有關(guān)軟件,如下所示:if(jatoolsPrinter.isPrintableFileType('doc'))//jatoolsPrinter.printDocument('a.doc');elsealert(' 請先安裝MSOFFICE!');判斷是否可以打印doc文檔isPrintableFileType 方法,接受一個字符型參數(shù),表示某一文檔類型,可能的取值是'doc','xls','ppt','pdf' 。附件方式打印非 HTML文檔(*doc,*xls,*ppt,*pdf)運行此例如在打印中,有的時候我們除過需要打印頁面上的 page中的內(nèi)容之外,還希望一起打印 doc、xls、ppt、pdf這些文件,要實現(xiàn)這個功能,就可以用 以下的方式來進行:myDoc={useAttaches:true, //useAttaches 設(shè)成true}//打印完page1后,接著打印a.doc,再接著打印page2,打印a.xls,...<divid='page1'attaches='doc#a.doc'>頁面1</div>//在div中加入attaches 屬性doc是打印文檔類型#之后是打印文件的路徑<divid='page2'attaches='xls#a.xlsdoc#a.doc'>頁面2</div>//也可以一次加入多個文檔中間用空格隔開<divid='page3'attaches='ppt#://a.ppt'>頁面3</div>// 文檔路徑也可以是絕對路徑打印TIFF文件運行此例如設(shè)置圖文并茂的頁腳頁眉運行此例如個性化的頁腳頁眉〔首頁不打印頁腳頁眉 〕運行此例如一次打印中的頁號分組運行此例如在一次打印中,我們往往希望在頁眉或頁腳上,顯示頁號,總頁數(shù),在默認(rèn)情況下,總頁數(shù)會顯示這次打印任務(wù)中的所有打印頁的總數(shù)。但有時,我們不希望使用這種頁號編碼方式,考慮這樣一種情形:你需要一次打印幾個人的體檢表,每個人的體檢表,又是一個大表格,有可能會被打印成幾頁,你希望每個人按自己的體檢表總頁數(shù)進行編碼。如下所示,假設(shè)小王的體檢表被打印成三頁, 小張的體檢表打印成兩頁,你希望在小王的體檢表的頁腳上,分別顯示1/3、2/3、3/3,小張的分別顯示1/2、2/2,而不是顯示1/5、2/5、5/5。<divid='page1'autoBreakTable='t1'>// 假設(shè)有3頁小王的體檢表vtableid='t1'>…</table></div><divid='page2'autoBreakTable='t2'>//假設(shè)有2頁小張的體檢表<tableid='t2'>…</table>v/div>要實現(xiàn)上述效果,也

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論