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

DocuSign与SharePoint Framework(React)集成问询(签名不上传外部服务器)

针对SPFx React集成DocuSign(签名不上传外部服务器)的问题解答

我刚好做过类似的SPFx+DocuSign集成需求,针对你的两个问题整理如下:

问题1:首次引导用户录制签名的方式与位置如何确定?

你可以在SPFx应用的自定义模态框(Modal)或者专属签名设置页面里嵌入DocuSign的客户端签名捕获组件,来引导用户首次录制签名:

  • 触发时机:当用户第一次进入签署流程时,自动弹出引导模态框,提示用户录制个人签名;或者在用户点击“签署”按钮后触发。
  • 位置布局:把签名捕获组件放在文档预览区域的侧边,或者模态框的核心位置,旁边搭配清晰的文字提示(比如“请绘制你的签名,完成后点击确认”)。
  • 引导方式:利用DocuSign组件自带的showGuide()方法,会自动展示绘制签名的操作提示;也可以配合React的Tooltip组件,自定义引导文案。

问题2:能否在应用内完成签名操作,无需用户跳转至DocuSign服务器?

完全可以!DocuSign提供了**客户端签名捕获(Client-Side Signature Capture)**功能,允许你将签名组件直接嵌入到SPFx React应用中,用户全程在你的应用内完成签名绘制,签名数据仅在本地生成,你可以选择存储到SharePoint的文档库/列表中,不需要跳转至DocuSign服务器,也不会把签名数据上传到DocuSign外部服务器。

简单实现示例(React函数组件)

首先在SPFx项目中安装依赖:

npm install docusign-esign --save

然后创建签名捕获组件:

import React, { useEffect, useRef } from 'react';
import * as docusign from 'docusign-esign';

const LocalSignatureCapture = () => {
  const signatureContainerRef = useRef(null);
  let signatureCaptureInstance = null;

  useEffect(() => {
    if (signatureContainerRef.current) {
      // 初始化签名捕获组件
      signatureCaptureInstance = new docusign.SignatureCapture({
        element: signatureContainerRef.current,
        width: 300,
        height: 150,
        // 捕获到签名后的回调
        onCapture: (signatureData) => {
          // 这里的signatureData包含签名的Base64图像等信息
          // 可以调用SPFx的REST API将其存储到SharePoint
          console.log("本地签名数据:", signatureData);
          // 示例:保存到SharePoint列表字段
          // saveSignatureToSharePoint(signatureData);
        },
        onError: (err) => {
          console.error("签名捕获失败:", err);
        }
      });

      // 首次加载时显示引导提示
      signatureCaptureInstance.showGuide();
    }

    // 组件卸载时清理实例
    return () => {
      if (signatureCaptureInstance) {
        signatureCaptureInstance.destroy();
      }
    };
  }, []);

  const handleClearSignature = () => {
    signatureCaptureInstance?.clear();
  };

  return (
    <div className="signature-container">
      <h4>请绘制你的签名</h4>
      <div 
        ref={signatureContainerRef} 
        style={{ border: "1px solid #ddd", borderRadius: 4, margin: "10px 0" }}
      ></div>
      <button onClick={handleClearSignature} style={{ marginRight: 10 }}>清除签名</button>
      <button onClick={() => signatureCaptureInstance?.capture()}>确认签名</button>
    </div>
  );
};

export default LocalSignatureCapture;

相关技术参考

DocuSign官方文档里有针对客户端签名捕获的详细说明,包括API参数、自定义配置等:

  • 核心功能文档:聚焦于Client-Side Signature Capture的使用指南,涵盖组件初始化、事件回调、样式自定义等
  • SPFx集成注意事项:需要确保SPFx项目的内容安全策略(CSP)允许加载DocuSign的客户端脚本,你可以在config/package-solution.json中配置相关权限

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 08:08:06