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

轉載自:https://www.twblogs.net/a/5b92933f2b71772002d30b1d/zh-cn/

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

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

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

注:PageOffice在文檔流轉過程中的使用效果請參考Samples示例的高級功能
三、3、在OA或文檔系統裏文件流轉中的使用效果

1.起草文檔:

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

主要代碼:

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

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();


(不同的用戶的不同痕跡用不同的顏色來表示,顏色是系統默認分配的)

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();


(文員清稿模式)

4.正式發文

一般文檔流轉的最後一個環節就是正式發文環節,在這一個環節,不需要用戶再對文檔做任何修改,所以就用到了PageOffice的只讀模式(docRealOnly)打開文檔, 在該模式下用戶只能閱讀文檔內容,不能對文檔做任何修改。如果配合 PageOffice的禁止複製、禁止另存、禁止打印等功能,還可以實現安全的文檔在線瀏覽功能。
主要代碼:

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


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

這一環節用戶可能用到的主要功能有:打印,頁面設置,禁止複製下載等.
以上相關功能的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實現不同流程環節下的控制和功能,代碼清晰明瞭,極大的節省了系統的開發時間,提高開發工作效率。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章