1. 程式人生 > >Web列印--Lodop使用手冊install_lodop.exe

Web列印--Lodop使用手冊install_lodop.exe

~_~一個程式設計師的淘寶店: 點選開啟連結

Lodop是一款專業的WEB列印控制元件,其設計目標是簡單易用、功能足夠強大,開創WEB列印開發的新局面。

Lodop設計者對WEB下的列印開發任務進行了分類彙總,高度抽象,設計出僅用幾個功能函式,就可實現複雜的列印任務,儘量減少使用者的知識累贅。控制元件釋出包有3個系統檔案組成,全部功能幾個控制元件引數和2組功能函式來實現。

儘管我們有個理想化的目標,那就是您不用詳細瞭解這些引數或函式,僅僅看懂幾個樣例檔案就能很輕鬆地開始使用本控制元件,為此Lodop提供了一個足夠完善的設計介面,用它可以實現大多數列印開發任務,但事實上了解這些引數和函式總還是有好處的,特別是當您的開發任務很複雜時,這就是本文目的,但願本文件足夠詳細且簡單明瞭。

如果此前曾看過lodop的入門樣例程式,本文會更容易理解!

Lodop釋出包內主要有如下幾個檔案:

該檔案是控制元件安裝和升級的主檔案,提供給使用者或開發者下載安裝,如果不特意攔截一般都能100%安裝,對“網頁外掛安裝難”有一定改善。如果將其複製或改名為uninstall_lodop.exe (名前加un)就可用其解除安裝控制元件。

Lodop安裝後,在作業系統目錄WINDOWS\system32下會安裝兩個實體檔案:CAOSOFT_WEB_PRINT_LODOP.OCXNPCAOSOFT_WEB_PRINT_lodop.dll,前一個檔案是OCX檔案,後者是Npplugin檔案,其作用是實現多瀏覽器支援。目前Lodop

支援IE系列、IE核心系列(遨遊、360、世界之窗、騰訊TT、搜狗等)瀏覽器,以及Firefox(火狐)系列、Chrome(谷歌)系列、Opera系列、Safari系列等Windows下幾乎所有的瀏覽器。

程式檔案有幾個預定引數:

-waitXX該引數設定安裝程式執行完畢後自動關閉視窗,這裡的XX表示關閉前等待的秒數,如果是0秒則安裝(或解除安裝)成功後立即關閉,例如:–wait8

-nowindow 該引數設定安裝程式執行時不出現視窗。

-un       該引數使程式執行解除安裝操作,引數優先於檔名。

-in       該引數使程式執行安裝操作,引數優先於檔名。

安裝介面如下:

該檔案是用來引導安裝控制元件的一個JS檔案,是個樣例,但建議直接採用。其中getLodop的任務是判斷瀏覽器的型別並決定採用哪個物件例項,並檢測控制元件是否安裝、是否最新版本、並引導安裝或升級。檔案內容如下:

function getLodop(oOBJECT,oEMBED){

var strHtml1="<br><font color='#FF00FF'>列印控制元件未安裝!點選這裡<a href='install_lodop.exe'>執行安裝</a>,安裝後請重新整理頁面或重新進入。</font>";

var strHtml2="<br><font color='#FF00FF'>列印控制元件需要升級!點選這裡<a href='install_lodop.exe'>執行升級</a>,升級後請重新進入。</font>";

var strHtml3="<br><br><font color='#FF00FF'>(注:如曾安裝過Lodop舊版附件npActiveXPLugin,請在【工具】->【附加元件】中先解除安裝它)</font>";

var LODOP=oEMBED;       

try{         

     if (navigator.appVersion.indexOf("MSIE")>=0) LODOP=oOBJECT;

     if ((LODOP==null)||(typeof(LODOP.VERSION)=="undefined")) {

   if (navigator.userAgent.indexOf('Firefox')>=0)

              document.documentElement.innerHTML=strHtml3+document.documentElement.innerHTML;

   if (navigator.appVersion.indexOf("MSIE")>=0) document.write(strHtml1); else

   document.documentElement.innerHTML=strHtml1+document.documentElement.innerHTML;

     } else if (LODOP.VERSION<"6.0.0.1") {

   if (navigator.appVersion.indexOf("MSIE")>=0) document.write(strHtml2); else

   document.documentElement.innerHTML=strHtml2+document.documentElement.innerHTML;

     }

     //*****如下空白位置適合呼叫統一功能:*********

     //*******************************************

     return LODOP;

}catch(err){

     document.documentElement.innerHTML="Error:"+strHtml1+document.documentElement.innerHTML;

     return LODOP;

}

}

其中的關鍵點是VERSION函式,Lodop提供了這個“讀版本號”功能,這樣控制元件的安裝和升級任務就交給JS來實現,以下是控制元件在頁面內的呼叫程式碼,其中包含getLodop的使用:

<head>

<title></title>

<script language="javascript" src="LodopFuncs.js"></script>

<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></embed>

</object>

</head>

<body>

<script language="javascript">

var LODOP=getLodop(document.getElementById('LODOP'),document.getElementById('LODOP_EM'));

</script>

</body>

以上兩段程式碼相互配合實現了Lodop的安裝、呼叫和升級。之所以將LodopFuncs.js作為一個資原始檔來部署,既可以利用瀏覽器的快取減少頁面內容的重複下載,同時還實現了控制元件釋出統一管理,整個應用系統中只要這一個地方釋出Lodop。其它頁面直接拷貝嵌入第2段程式碼就可以了。

Lodop有如下控制元件引數,以頁面object物件元素的引數形式使用:

名稱:設定控制元件的顯示標題

格式:<param name="Caption" value="我是列印控制元件lodop">

功能: 控制元件在頁面內一般是以object元素形式被引用。可以通過設定元素的width和height等於0來隱藏控制元件,不隱藏時可以為控制元件設定一個標題,以便於看到控制元件是否被正確安裝,以及控制元件物件在頁面內的位置。希望列印預覽介面或設計介面內嵌到網頁內時,本引數很有用。

Color

名稱:設定控制元件的顯示區域顏色

格式:<param name="Color" value="#C0C0C0">

功能:通過該引數設定控制元件顯示區域的底色,對於希望列印預覽介面或設計介面內嵌到網頁內時,本引數可以讓控制元件容易融於整體頁面。

引數值採用超文字顏色形式,可以是三色16進位制值組合,也可以是英文顏色名。

名稱:設定控制元件的顯示區域邊界

格式:<param name="Border" value="1">

功能:通過該引數設定控制元件顯示區域的邊界,值等於1表示有邊界,否則無邊界。本引數可以讓控制元件更融於整體頁面。

另外,控制元件還有三個用於註冊的輔助引數,參考後面《軟體使用權註冊》一節。

Lodop的功能函式不多,但引數比較複雜。全部函式分“基本函式”和“擴充套件函式”兩類,兩類函式有類似性,基本函式使用簡單,達不到要求時請使用擴充套件函式,二者無本質區別。

1、基本函式

名稱:獲得軟體版本號

格式:VERSION

結果:返回字元型結果

版本號有四個數字組成,樣式為:X.X.X.X

名稱:列印初始化

格式:PRINT_INIT(strTaskName)

功能:初始化執行環境,清理異常列印遺留的系統資源,設定列印任務名。

引數:

strTaskName

列印任務名,字元型引數,由開發者自主設定,未限制長度,字元要求符合Windows檔案起名規則,Lodop會根據該名記憶相關的列印設定、列印維護資訊。

strTaskName空,控制元件則不儲存本地化資訊,列印全部由頁面程式控制。

結果:返回邏輯值

返回邏輯真表示初始化成功,邏輯假表示初始化失敗,失敗原因有:前一個列印事務沒有完成;作業系統沒有印表機(驅動)等。

建議或要求:

該函式與PRINT_INITA都有初始化功能,每個列印事務至少初始化一次,建議列印程式首先呼叫該函式。任務名要儘量區別於其它列印任務,譬如用“XX單位_XX管理資訊系統_XX子系統_XX模組_XX列印作業”字樣。

不希望終端使用者更改列印佈局時,則設strTaskName空。

名稱:設定紙張大小

格式:SET_PRINT_PAGESIZE(intOrient, PageWidth,PageHeight,strPageName)

功能:設定列印紙張為固定紙張或自適應內容高,並設定相關大小值或紙張名及列印方向。

引數:

intOrient

列印方向及紙張型別,數字型,

1---()向列印,固定紙張; 
2---
橫向列印,固定紙張;  
3---
()向列印,寬度固定,高度按列印內容的高度自適應;
0(或其它)----列印方向由操作者自行選擇或按印表機預設設定;

PageWidth

設定自定義紙張寬度,整數或字元型,整數時預設長度單位為0.1毫米。字元型時可包含單位名:in(英寸)cm(釐米)mm(毫米)pt()px(1/96英寸),如“10mm”表示10毫米。

紙張寬,單位為0.1mm譬如該引數值為45,則表示4.5mm,計量精度是0.1mm

PageHeight

固定紙張時設定紙張高;高度自適應時設定紙張底邊的空白高。整數或字元型,整數時預設長度單位為0.1毫米。字元型時可包含單位名:in(英寸)cm(釐米)mm(毫米)pt()px(1/96英寸),如“10mm”表示10毫米。

高小於等於0strPageName才起作用。

strPageName

所選紙張型別名,字元型。不同印表機所支援的紙張可能不一樣,這裡的名稱同作業系統內印表機屬性中的紙張名稱,支援作業系統內的自定義紙張。

關鍵字“CreateCustomPage”會按以上寬度和高度自動建立一個自定義紙張,所建立的紙張名固定為“LodopCustomPage”,多次建立則重新整理該紙張的大小值。

注:PageWidthPageHeightstrPageName都無效時,本函式對紙張大小不起作用,控制元件則採用所選印表機的預設紙張,但intOrient仍可起作用。

如果列印程式未採用擴充套件方式(PRINT_INITA初始化,本函式的固定紙張功能所定製的紙張大小,會起到PRINT_INITAWidthHeight的相同功能。

實際列印時,控制元件按如下優先順序順序確定紙張大小:

1優先是列印維護裡紙張屬性(“本機自行定義紙張”)設定的紙張大小。

2優先是SET_PRINT_PAGESIZE指定的紙張大小;

3優先是上次列印時在預覽介面設定裡選擇的紙張型別;

4是按所選印表機的預設紙張;

結果:

建議或要求:

列印初始化之後呼叫。

如果列印紙張不固定,希望由操作者自主選擇紙張時,則不要呼叫本函式。

名稱:增加超文字列印項(普通模式)

格式:ADD_PRINT_HTM(Top,Left,Width,Height,strHtmlContent)

功能:增加超文字列印項,設定該列印項在紙張內的位置和區域大小,實現超文字控制列印。

引數:

Top

所增列印項在紙張內的上邊距,整數或字元型,整數時預設長度單位為px。字元型時可包含單位名:in(英寸)cm(釐米)mm(毫米)pt()px(1/96英寸)%(百分比),如“10mm”表示10毫米。

Left

所增列印項在紙張內的左邊距,整數或字元型,整數時預設長度單位為px。字元型時可包含單位名:in(英寸)cm(釐米)mm(毫米)pt()px(1/96英寸)%(百分比),如“10mm”表示10毫米。

Width

列印區域的寬度,整數或字元型,整數時預設長度單位為px。字元型時可包含單位名:in(英寸)cm(釐米)mm(毫米)pt()px(1/96英寸)%(百分比),如“10mm”表示10毫米。本引數可以用RightMargin關鍵字轉義為列印區域相對於紙張的“右邊距”。

Height

列印區域的高度,整數或字元型,整數時預設長度單位為px。字元型時可包含單位名:in(英寸)cm(釐米)mm(毫米)pt()px(1/96英寸)%(百分比),如“10mm”表示10毫米,控制元件按這個值自動分頁。本引數可以用BottomMargin關鍵字轉義為列印區域相對於紙張的“下邊距”。

strHtmlContent

超文字程式碼內容,字元型,未限制長度。可以是一個完整的頁面超文字程式碼,或者是一個程式碼段落,也可以是形式的URL地址。

Lodop專有樣式和屬性有:

●程式碼中若包含style="page-break-after:always"style="page-break-before:always",該元素稱為“強制分頁元素”,控制元件會在該元素處分頁。

●程式碼中的標籤IMG如果有transcolor屬性,則可以實現透明列印圖片。例如屬性格式為:transcolor="#FFFFFF"表示用白色作為透明底色,這裡的顏色值可以是“#”加三色16進位制值組合,也可以是英文顏色名。這個專有屬性再配合IMGposition: absolute可以實現“先字後章”的公章列印效果。

●程式碼中的元素如果包含borderthin屬性,如果屬性值等於true,則該元素的border在合併單元格時會採用單細線模式。

結果:無

建議或要求:

要求在列印初始化後使用,建議在畫線類函式之後呼叫。注意“強制分頁元素”要符合xhtml規範,建議用跨整行的元素,內容不能空,內容可以是“&nbsp;”。強制分頁符對其它Lodop函式無效,僅適用本函式。

名稱:增加表格列印項(超文字模式)

格式:ADD_PRINT_TABLE(Top,Left,Width,Height,strHtml)

功能:用超文字增加一個表格列印項,設定該表格在每個紙張內的位置和區域大小。列印時只輸出首個頁面元素table的顯示內容,當table內包含theadtfoot時,一旦表格被分頁,則每個列印頁都輸出表頭(thead)或表尾(tfoot)

引數:

Top

表格資料頭(頁頭thead)在紙張內的上邊距,整數或字元型,整數時預設長度單位為px。字元型時可包含單位名:in(英寸)cm(釐米)mm(毫米)pt()px(1/96英寸)%(百分比),如“10mm”表示10毫米。

Left

表格資料頭(頁頭thead)在紙張內的左邊距,整數或字元型,字元型時可包含單位名:in(英寸)cm(釐米)mm(毫米)pt()px(1/96英寸)%(百分比),如“10mm”表示10毫米。

Width

列印區域的寬度,整數或字元型,整數時預設長度單位為px。字元型時可包含單位名:in(英寸)cm(釐米)mm(毫米)pt()px(1/96英寸)%(百分比),如“10mm”表示10毫米。本引數可以用RightMargin關鍵字轉義為列印區域相對於紙張的“右邊距”。

Height

表格資料體(tbody)區域的高度,整數或字元型,整數時預設長度單位為px。字元型時可包含單位名:in(英寸)cm(釐米)mm(毫米)pt()px(1/96英寸)%(百分比),如“10mm”表示10毫米。控制元件按這個值自動分頁。本引數可以用BottomMargin關鍵字轉義為列印區域相對於紙張的“下邊距”。

strHtml

超文字程式碼內容,字元型,未限制長度。可以是一個完整的頁面超文字程式碼,或者是一個程式碼段落,也可以是形式的URL地址。要求實際內容中至少包含一個table元素。
特別說明:本函式能識別的超文字專有元素屬性有tdataformattclasstindex等四個,它們主要用來實現分頁小計、分類合計等統計功能,這四個屬性可以用在table內的任何元素上,包含tdata屬性的超文字元素下面稱為“統計結果元素”,被統計的超文字元素稱為“資料元素”,它們的屬性值及其含義如下:

tdata:設定統計型別,其值和含義為:
subCount---本頁行數,即本頁該資料列的單元格行數;
subSum
---本頁合計,即本頁該資料列的數值合計;
subAverage
---本頁平均數,即本頁合計除以本頁行數;
Count---累計行數,即從第一頁到本頁的該列行數的累加值;
Sum
---累計數,即從第一頁到本頁的該列數值的累加值;
Average
---累計平均數,即累計數除以累計行數;
allCount---總行數,即該列全表的行數;
allSum
---總計數,即該列全表的數值總和;
allAverage
---總平均數,即全表總計數除以總行數;pageNO---頁號,即本table頁的序號(與列印紙張的頁號不一定相同);
pageCount
---總頁數,即全(table)表被分成的總頁數;

format:設定統計結果的顯示格式,其值如下樣式:
0”“0.00”“#.##”“#,##0.00”“0.000E+00”“#.###E-0”“UpperMoney(大寫金額)”等等,其中的“#”表示當資料為0時不顯示。
tclass:設定分類統計的類名,其值可任意設定,在分類統計時,“統計結果元素”和“資料元素”的tclass必須一致。
tindex:一般要求“統計結果元素”的位置與“資料元素”的列位置一致或內含在“資料元素”列內,如果位置無法一致,可以用tindex指定對應的資料列,該值是數字型的列序號,從1起始。
⑤佔位符:一個要顯示統計結果的“統計結果元素”必須要包含佔位符,佔位符是任意個#組成的字串,佔位符可以與其它內容混合在一起,當統計結果值較大時,開發者需要注意佔位符要佔用足夠多的位置,除非佔位符周圍有合理的空白區,避免統計結果與普通內容重疊。

結果:無

建議或要求:

要求在列印初始化後呼叫,建議在畫線類函式之後呼叫。

名稱:增加超文字列印項(URL模式)

格式:ADD_PRINT_URL(Top,Left,Width,Height,strURL)

功能:URL地址增加超文字列印項,設定該列印項在紙張內的位置和區域大小。

引數:

Top

所增列印項在紙張內的上邊距,整數或字元型,整數時預設長度單位為px。字元型時可包含單位名:in(英寸)cm(釐米)mm(毫米)pt()px(1/96英寸)%(百分比),如“10mm”表示10毫米。

Left

所增列印項在紙張內的左邊距,整數或字元型,整數時預設長度單位為px。字元型時可包含單位名:in(英寸)cm(釐米)mm(毫米)pt()px(1/96英寸)%(百分比),如“10mm”表示10毫米。

Width

列印區域的寬度,整數或字元型,整數時預設長度單位為px。字元型時可包含單位名:in(英寸)cm(釐米)mm(毫米)pt()px(1/96英寸)%(百分比),如“10mm”表示10毫米。本引數可以用RightMargin關鍵字轉義為列印區域相對於紙張的“右邊距”。

Height

列印區域的高度,整數或字元型,整數時預設長度單位為px。字元型時可包含單位名:in(英寸)cm(釐米)mm(毫米)pt()px(1/96英寸)%(百分比),如“10mm”表示10毫米。控制元件按這個值自動分頁。本引數可以用BottomMargin關鍵字轉義為列印區域相對於紙張的“下邊距”。

strURL

頁面URL地址,字元型,未限制長度。

結果:無

建議或要求:

要求在列印初始化後呼叫,建議在畫線類函式之後呼叫。

名稱:增加純文字列印項

格式:ADD_PRINT_TEXT(Top,Left,Width,Height,strContent)

功能:增加純文字列印項,設定該列印項在紙張內的位置和區域大小,文字內容在該區域內自動折行,當內容超出區域高度時,如果物件被設為“多頁文件”則會自動分頁繼續列印,否則內容被擷取。

引數:

Top

列印項在紙張內的上邊距,整數或字元型,整數時預設長度單位為px。字元型時可包含單位名:in(英寸)cm(釐米)mm(毫米)pt()px(1/96英寸)%(百分比),如“10mm”表示10毫米。當上邊距超過紙張高度時,列印項被輸出在下一頁(或更下頁)

Left

列印項在紙張內的左邊距,整數或字元型,整數時預設長度單位為px。字元型時可包含單位名:in(英寸)cm(釐米)mm(毫米)pt()px(1/96英寸)%(百分比),如“10mm”表示10毫米。

Width

列印區域的寬度,整數或字元型,整數時預設長度單位為px。字元型時可包含單位名:in(英寸)cm(釐米)mm(毫米)pt()px(1/96英寸)%(百分比),如“10mm”表示10毫米。本引數可以用RightMargin關鍵字轉義為列印區域相對於紙張的“右邊距”。

Height

列印區域的高度,整數或字元型,整數時預設長度單位為px。字元型時可包含單位名:in(英寸)cm(釐米)mm(毫米)pt()px(1/96英寸)%(百分比),如“10mm”表示10毫米。本引數可以用BottomMargin關鍵字轉義為列印區域相對於紙張的“下邊距”。

strContent

純文字內容,字元型,未限制長度。

結果:無

建議或要求:

要求在列印初始化後呼叫,建議在畫線類函式之後呼叫。

名稱:增加圖片列印項

格式:ADD_PRINT_IMAGE(Top,Left,Width,Height,strHtmlContent)

功能:增加圖片列印項,設定該列印項在紙張內的位置和區域大小。

引數:

Top

所增列印項在紙張內的上邊距,整數或字元型,整數時預設長度單位為px。字元型時可包含單位名:in(英寸)cm(釐米)mm(毫米)pt()px(1/96英寸)%(百分比),如“10mm”表示10毫米。

Left

所增列印項在紙張內的左邊距,整數或字元型,整數時預設長度單位為px。字元型時可包含單位名:in(英寸)cm(釐米)mm(毫米)pt()px(1/96英寸)%(百分比),如“10mm”表示10毫米。

Width

圖片的寬度,整數或字元型,整數時預設長度單位為px。字元型時可包含單位名:in(英寸)cm(釐米)mm(毫米)pt()px(1/96英寸)%(百分比),如“10mm”表示10毫米。本引數可以用RightMargin關鍵字轉義為列印區域相對於紙張的“右邊距”。

Height

圖片的高度,整數或字元型,整數時預設長度單位為px。字元型時可包含單位名:in(英寸)cm(釐米)mm(毫米)pt()px(1/96英寸)%(百分比),如“10mm”表示10毫米。圖片大時被擷取,不會分到下頁。本引數可以用BottomMargin關鍵字轉義為列印區域相對於紙張的“下邊距”。

strHtmlContent

本引數是字元型,有三種情況:一是超文字程式碼內容;二是本地檔名內容;第三是WEB地址。第一種情況一般是用IMG標籤組成的超文字程式碼段落。第二種情況是本地檔名全路徑,格式如“C:/test.jpg”。第三種情況是是形式的URL地址。

結果:無

建議或要求:

要求在列印初始化後呼叫,建議在畫線類函式之後呼叫。