天天看點

PageOffice常用功能之-OA系統中的文檔線上編輯及流轉

OA公文流轉系統主要用于處理企業日常工作中内外部的各種公文,包括了公文的拟稿、審批、傳閱、公告、歸檔,多層上級可以對下級撰寫的公文進行逐級審批或修改,待最進階人員确認無誤後即可進行核稿和發文等操作,最後在相關人員中傳閱。根據文檔在OA系統及其它辦公系統的中的流轉方式,PageOffice開發平台研發出了文檔流轉的各個環節對應的檔案打開模式及相關實用功能,以便于更好地實作OA系統的需求。下面我們詳細論述PageOffice在OA系統中的主要使用方式。

一.文檔在OA系統中的簡略流程

PageOffice常用功能之-OA系統中的文檔線上編輯及流轉

二.文檔流轉的各個環節的詳細論述

注:PageOffice在文檔流轉過程中的使用效果請參考Samples示例的進階功能

三、3、在OA或文檔系統裡檔案流轉中的使用效果

1.起草文檔:

一般文檔流轉的第一個環節就是起草文檔,在此環節文員需要自由編輯文檔而不用留下任何痕迹,是以PageOffice為了這個環節開發出來了文檔的普通編輯模式(docNormalEdit)。在這個模式下文員可以自由編輯文檔内容,并不會留下任何痕迹。

主要代碼:

PageOfficeCtrl poCtrl1 = new PageOfficeCtrl(request);
……
poCtrl1.webOpen("doc/"+filePath, OpenModeType.docNormalEdit, userName);
           
PageOffice常用功能之-OA系統中的文檔線上編輯及流轉

2.上司批閱

一般文檔流轉的過程中各個階層的上司都會對文員在第一步中起草的文檔進行修改,添加批注等操作,這時對文檔所做的任何修訂都必須以痕迹的形式保留下來,以便于更高層的上司進行稽核,是以PageOffice開發出來了文檔的強制留痕模式(docRevisionOnly)。在這種模式下,使用者對文檔做的任何修訂都會被記錄下來;不同使用者對文檔做的修訂會自動用不同的顔色标記; 使用者不能接受、拒絕其他使用者對此文檔所做的任何修訂;修訂記錄能夠顯示修訂者的名字,修訂時間及修訂内容。

主要代碼:

PageOfficeCtrl poCtrl1 = new PageOfficeCtrl(request);
……	
poCtrl1.webOpen("doc/"+filePath, OpenModeType.docRevisionOnly, userName);
           

使用者在這一環節主要用到的功能有:顯示隐藏痕迹,上司圈閱,手寫批注,分層顯示手寫批注,插入鍵盤批注等。開發人員可以通過添加自定義按鈕觸發js的方式來實作這些功能。

添加自定義工具欄按鈕的方法如下:

//“顯示/隐藏痕迹”為自定義按鈕的名稱,Show_HidRevisions為js的function方法名,5是按鈕圖示的索引
poCtrl1.addCustomToolButton("顯示/隐藏痕迹", "Show_HideRevisions", 5);
           

pageoffice提供20個圖示,開發人員可以從中任意選擇合适的圖示比對該功能。詳細請參考PageOffice的Samples示例:一、19、在PageOffice自定義工具條上添加一個按鈕(以Word為例)

以上相關功能的js代碼:

(1)顯示隐藏痕迹:(痕迹一般指的是鍵盤批注和留痕模式使用者删除或插入的文檔内容,這些統稱為痕迹,不包含手寫批注)

document.getElementById("PageOfficeCtrl1").ShowRevisions = false|true;
           

(2)上司圈閱,手寫批注:

document.getElementById("PageOfficeCtrl1").HandDraw.Start();
           

(3)分層顯示手寫批注:

document.getElementById("PageOfficeCtrl1").HandDraw.ShowLayerBar();
           

ShowLayerBar(): 顯示“分層手寫批注”工具欄,在工具欄上顯示所有做過手寫批注的批注者的使用者名。點選指定的使用者名,隻顯示該使用者的手寫批注,而隐藏其他使用者的手寫批注。也可以顯示全部批注,或隐藏全部批注。

注:上述描述中的該使用者指的是webOpen的第三個參數值.具體說明如下,

poCtrl1.webOpen("doc/"+filePath, OpenModeType.docRevisionOnly, userName);

webOpen中的第三個參數userName用來控制分層顯示手寫批注的使用者名和痕迹提示框的使用者名。pageoffice的并發控制機制也是用該參數差別是否不同使用者打開文檔的。一般來說,webOpen的第三個參數都會設定成目前登入系統的使用者名。

(4)插入鍵盤批注:

document.getElementById("PageOfficeCtrl1").WordInsertComment();
           
PageOffice常用功能之-OA系統中的文檔線上編輯及流轉

(不同的使用者的不同痕迹用不同的顔色來表示,顔色是系統預設配置設定的)

3.文員清稿

在這一環節,文員将對文檔進行清稿工作,包括拒絕或者接受修訂,清除文檔的所有痕迹及手寫内容(對文檔進行電子簽章的環節一般也是使用此模式打開檔案的),是以這一環節将用到PageOffice的核稿模式(docAdmin),在這種模式下, 使用者能夠清理文檔流轉過程中留下的各種修訂、修改、批注及手寫批注;使用者可以顯示或隐藏修訂痕迹;使用者可以自由編輯文檔而不會留下任何痕迹記錄;使用者還可以移動、删除任何人的手寫批注。

主要代碼:

PageOfficeCtrl poCtrl1 = new PageOfficeCtrl(request);
……
poCtrl1.webOpen("doc/"+filePath, OpenModeType.docAdmin, “張三”);
           

使用者在這一環節主要用到的功能有:接受或者拒絕修訂,隐藏所有痕迹,插入手寫簽名章或者圖檔章.

以上相關功能的js代碼:

(1)接受所有修訂:

document.getElementById("PageOfficeCtrl1").AcceptAllRevisions();
           

(2)拒絕所有修訂:

document.getElementById("PageOfficeCtrl1").Document.RejectAllRevisions();
           

(3)插入印章:

document.getElementById("PageOfficeCtrl1").ZoomSeal.AddSeal();
           

注:PageOffice的電子簽章功能的詳細使用可以參考Samples的基本功能

一、15、示範加蓋印章和簽字功能(以Word為例),此處不再贅述.

(4)插入手寫簽名章:

document.getElementById("PageOfficeCtrl1").ZoomSeal. AddHandSign();
           
PageOffice常用功能之-OA系統中的文檔線上編輯及流轉

(文員清稿模式)

4.正式發文

一般文檔流轉的最後一個環節就是正式發文環節,在這一個環節,不需要使用者再對文檔做任何修改,是以就用到了PageOffice的隻讀模式(docRealOnly)打開文檔, 在該模式下使用者隻能閱讀文檔内容,不能對文檔做任何修改。如果配合 PageOffice的禁止複制、禁止另存、禁止列印等功能,還可以實作安全的文檔線上浏覽功能。

主要代碼:

PageOfficeCtrl poCtrl1 = new PageOfficeCtrl(request);
……
poCtrl1.webOpen("doc/"+filePath, OpenModeType.docReadOnly, "張三");
           
PageOffice常用功能之-OA系統中的文檔線上編輯及流轉

正式發文(隻讀模式打開文檔)

這一環節使用者可能用到的主要功能有:列印,頁面設定,禁止複制下載下傳等.

以上相關功能的js代碼如下:

(1)列印:

document.getElementById("PageOfficeCtrl1").ShowDialog(4);
           

(2)頁面設定:

document.getElementById("PageOfficeCtrl1").ShowDialog(5);
           

(3)另存到本地:

document.getElementById("PageOfficeCtrl1").ShowDialog(2);
           

(4)禁止複制,粘貼:

//伺服器端代碼。須放webOpen方法之前設定才可以禁止複制、粘貼的功能。
poctrl. setAllowCopy(false);
           

5.正式發文時還可以轉換為htm, mht,pdf等格式的文檔

有的使用者需要實作沒有安裝Office用戶端的電腦也可以檢視正式發文,這就需要把Word文檔另存為HTML或PDF了。如果另存為HTML,那麼用戶端直接就可以用浏覽器檢視,缺點是另存出來的HTML跟Word原文的格式會有一定的差距;如果另存為PDF,那麼由于PageOffice用戶端内置PDF閱讀器,可以支援PDF文檔的線上打開,是以另存為PDF是隻讀發文的一種比較完美的實作方式,但是隻有專業版和企業版才支援此功能,标準版不支援。

(1)将目前文檔另存為HTML,MHT類型的檔案,并上傳到Web伺服器端的js代碼:

document.getElementById("PageOfficeCtrl1").WebSaveAsHTML();
document.getElementById("PageOfficeCtrl1").WebSaveAsMHT();
           

(2)将目前文檔另存為PDF的js代碼:

document.getElementById("PageOfficeCtrl1").WebSaveAsPDF();
           

三.擷取文檔中所有痕迹的js方法

一般在文檔強制留痕後,有個别使用者的需求是擷取文檔中的所有痕迹并儲存到資料庫,以便于後期的查找核對。還有一些需求是擷取文檔中的所有痕迹後以痕迹清單的形式在頁面顯示出來,具體為什麼要這樣做呢?因為當文檔有幾十頁甚至更大時,使用者不容易知道文檔具體哪些頁有痕迹,不容易找到文檔中所有的痕迹進行處理,當有痕迹清單顯示時,使用者很容易根據清單資訊定位到文檔中每一個痕迹的位置并對該痕迹進行處理,這樣大大節省了使用者的工作時間,提高了使用者的工作效率。下面是一個擷取Word文檔中所有痕迹的代碼,開發人員可以利用這個js示例中所調用的痕迹接口實作上述使用者需求。

//擷取并顯示所有痕迹
function jsGetAllRevisions()
{
	var docObj = document.getElementById("PageOfficeCtrl1").Document;
	var i;
	var str="";
	for (i = 1;i <=docObj.Revisions.Count;i++){
        str=str + docObj.Revisions.Item(i).Author;
        if (docObj.Revisions.Item(i).Type=="1"){ 
			str=str+ ' 插入:'+docObj.Revisions.Item(i).Range.Text+"\r\n";
		}
		else if (docObj.Revisions.Item(i).Type=="2"){
			str=str + ' 删除:'+docObj.Revisions.Item(i).Range.Text+"\r\n";
		}
		else {
			str=str + ' 調整格式或樣式。';
		}
	}
	alert("目前文檔的所有修改痕迹如下:\r\n"+str);
}
//擷取痕迹中時間的js:
//Document.Revisions.Item(i).Range.Date;
//Document.Revisions.Item(i).Range.DateTime;
//Document.Revisions.Item(i).Range.Time;
           

四.總結

綜上所述,PageOffice針對文檔在OA辦公系統或其他文檔辦公系統中不同流程環節的特點,開發了對應的模式,還提供了顯示隐藏痕迹、手寫批注、分層顯示手寫、列印控制、另存控制、儲存控制等各種功能,使得開發人員隻需關注自身系統的業務邏輯開發,很簡單友善的利用PageOffice實作不同流程環節下的控制和功能,代碼清晰明了,極大的節省了系統的開發時間,提高開發工作效率。