You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

复合模板添加多文档时签名标签重复问题求助

解决Composite Template多文档签名标签重叠问题

问题根源

你的代码存在两个核心问题导致签名标签重叠:

  1. 嵌套循环生成了过多重复的CompositeTemplate实例,每份文档会和每个模板组合生成一个新的CompositeTemplate,导致所有收件人配置被重复应用到所有文档上。
  2. 未为每份文档的签名标签指定独立的绑定关系或位置,所有签名标签默认叠加在同一位置。

修复方案

调整代码结构,让每份文档对应一个独立的CompositeTemplate,并确保每个CompositeTemplate内的模板、文档、收件人配置一一绑定,同时为签名标签指定对应文档的位置:

修改后的代码示例

List<CompositeTemplate> compositeTemplateList = new ArrayList<>();
int compositeIdCounter = 1;

// 遍历每份文档,每个文档对应一个CompositeTemplate
for (Document targetDoc : documents) {
    CompositeTemplate cTemplate = new CompositeTemplate();
    // 设置唯一的复合模板ID
    cTemplate.setCompositeTemplateId(String.valueOf(compositeIdCounter++));
    // 绑定当前文档到这个复合模板
    cTemplate.setDocument(targetDoc);

    // 配置服务器模板(如果所有文档用同一模板,直接复用ID即可)
    ServerTemplate serverTemplate = new ServerTemplate();
    serverTemplate.setTemplateId("你的模板ID");
    serverTemplate.setSequence("1"); // 序列值需与InlineTemplate一致
    cTemplate.setServerTemplates(Arrays.asList(serverTemplate));

    // 配置内联模板,为当前文档绑定独立的签名者
    InlineTemplate inlineTemplate = new InlineTemplate();
    inlineTemplate.setSequence("1"); // 与ServerTemplate的sequence匹配,确保绑定关系

    Recipients recipients = new Recipients();
    List<Signer> signers = new ArrayList<>();
    for (SignerInfo signerInfo : signerList) {
        Signer signer = new Signer();
        signer.setEmail(signerInfo.getEmail());
        signer.setName(signerInfo.getName());
        signer.setRecipientId(String.valueOf(signerInfo.getId())); // 唯一收件人ID

        // 关键:为当前文档设置独立的签名标签,指定绑定的文档和位置
        Tabs tabs = new Tabs();
        SignHere signHere = new SignHere();
        signHere.setDocumentId("1"); // 当前复合模板内的文档ID默认是1
        signHere.setPageNumber("1"); // 根据模板或需求调整页码
        signHere.setXPosition("150"); // 调整X坐标避免重叠
        signHere.setYPosition("200"); // 调整Y坐标避免重叠
        tabs.setSignHereTabs(Arrays.asList(signHere));
        
        signer.setTabs(tabs);
        signers.add(signer);
    }
    recipients.setSigners(signers);
    inlineTemplate.setRecipients(recipients);

    cTemplate.setInlineTemplates(Arrays.asList(inlineTemplate));
    compositeTemplateList.add(cTemplate);
}

env.setStatus("sent");
env.setCompositeTemplates(compositeTemplateList);

关键调整说明

  • 移除文档与模板的嵌套循环,确保每份文档仅对应一个CompositeTemplate,避免重复配置叠加。
  • 为每个CompositeTemplate设置唯一的compositeTemplateId,防止配置冲突。
  • 保持ServerTemplate和InlineTemplate的sequence值一致,确保模板与收件人配置绑定到当前文档。
  • 为每个签名标签指定明确的文档ID和位置,确保每份文档的签名标签独立显示。

内容的提问来源于stack exchange,提问作者surabhi chaurasia

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.06 01:10:13