【问题标题】:Apache POI set permisson region in .docx document.docx 文档中的 Apache POI 设置权限区域
【发布时间】:2015-11-03 16:44:53
【问题描述】:

“权限区域”是什么意思?您可以通过将其设为只读来保护整个文档,但您可以保留可以编辑的区域。

我正在尝试在某些 .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"/>

我该怎么做?

【问题讨论】:

    标签: java apache-poi docx


    【解决方案1】:

    嗯,我找到了解决方案。我不知道这是否是最好的方法,但对我来说效果很好:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-10-29
      • 1970-01-01
      • 2013-02-07
      • 1970-01-01
      • 2012-07-25
      • 1970-01-01
      • 2016-05-20
      相关资源
      最近更新 更多