2015-11-03 277 views
0

「權限區域」是什麼意思?您可以通過將文檔設置爲只讀來保護整個文檔,但可以保留可以編輯的區域。Apache POI在.docx文件中設置權限區域

我想在某些.docx文檔中定義許可區域。據我所知,POI庫中沒有用於執行此操作的API - 我唯一發現的是CTP類中的相關方法,但我不知道如何使用它。我的目標是包括一個或多個XWPFRun進入許可區域產生類似:

<w:permStart w:edGrp="everyone" w:id="1371696447"/> 
<w:r> 
    <w:rPr> 
     <w:sz w:val="28"/> 
     <w:szCs w:val="28"/> 
     <w:lang w:val="cs-CZ"/> 
    </w:rPr> 
    <w:t>test3</w:t> 
</w:r> 
<w:permEnd w:id="1371696447"/> 

我該怎麼辦呢?

回答

0

嗯,我找到了解決方案。我不知道,如果這是最好的辦法,但它對我來說很好:

// get DOM nodes of paragraph containing target run 
// and run itself 
Node paragraphNode = paragraph.getCTP().getDomNode(); 
Node runNode = run.getCTR().getDomNode(); 

// generate random id for perm region 
String id = Integer.toString(this.random.nextInt()); 

// create starting node, set id and who can edit it 
CTPermStart permStart = paragraph.getCTP().addNewPermStart(); 
permStart.setId(id); 
permStart.setEdGrp(STEdGrp.EVERYONE); 
Node permStartNode = permStart.getDomNode(); 

// create ending node and set id 
CTPerm permEnd = paragraph.getCTP().addNewPermEnd(); 
permEnd.setId(id); 
Node permEndNode = permEnd.getDomNode(); 

// enclose target run with created start/end nodes 
paragraphNode.insertBefore(permStartNode, runNode); 
paragraphNode.insertBefore(permEndNode, runNode.getNextSibling());