0

我想使用自定义字段创建嵌入式 Hello Sign 签名文档,但不使用模板。有什么办法吗?

情况是,我必须在一个动态系统生成的文档上签名。所以不能使用现有的默认模板,而必须使用文件代替它。但是在生成的文档上,我需要一个字段,例如客户名称 - 这是一个文本框,但由签名者姓名预先填写,并且客户在签署文档之前根据他的选择更改该文本框的值。我已经尝试过所有的事情,比如使用自定义字段(但如果不使用预定义模板则不允许)、FormFieldsPerDocument(它提供文本框但不允许在生成签名文档之前设置值)、文本标签等。

这是我的实现代码片段

// Create embedded signature request
var request = new SignatureRequest();
request.Title = "Hello Sign Embedded Signature Document";
request.Message = strDocumentName;
request.AddSigner(signerEmail, signerName);
request.AddFile(pdfBytes, documentName);
request.FormFieldsPerDocument = lstFormFields;
request.Metadata.Add("custom_id", "1234");
request.Metadata.Add("custom_text", signerName);
request.UseTextTags = true;
request.TestMode = true;

CustomField objCustomerField = new CustomField();
objCustomerField.ApiId = "45";
objCustomerField.Editor = "Client";
objCustomerField.Type = "text";
objCustomerField.Value = "Raj Sharma";
objCustomerField.Required = true;
objCustomerField.X = 350;
objCustomerField.Y = 600;
request.CustomFields.Add(objCustomerField);

var response = client.CreateEmbeddedSignatureRequest(request, HelloSignAPIClientId);

我已经尝试了 API 文档中所有可能的方法,但无法找到正确的解决方案。如果可以通过任何其他方法处理这种情况,请为我提供一种方法,或者如果我在此代码片段中犯了任何错误,请引起我的注意。

4

1 回答 1

1

您需要将要预填充的字段添加到文档中,以便将自定义字段值映射到它们。

如果您不使用模板,可以通过 2 种方式添加字段:

  1. 文本标签
  2. 每个文档的表单字段

文本标签将要求您在要上传的文档上添加标签,以便在上传之前创建请求。HelloSign API 文档中有一个演练详细介绍了这一点。

每个文档的表单字段允许您使用坐标系以编程方式 100% 添加字段。

以下是发送的请求示例,其中包含通过表单字段创建的字段:

var request = new SignatureRequest();
request.Title = "NDA with Acme Co.";
request.Subject = "The NDA we talked about";
request.Message = "Please sign this NDA and then we can discuss more. Let me know if you have any questions.";
request.AddSigner("jack@example.com", "Jack");
request.AddFile("c:\users\me\My Documents\nda.pdf").WithFields(
    //            id      type                     page    x    y    w   h   req signer
    new FormField("chk1", FormField.TypeCheckbox,     1, 140,  72,  36, 36, true,     0),
    new FormField("txt1", FormField.TypeText,         1, 140, 144, 225, 20, true,     0),
    new FormField("dat1", FormField.TypeDateSigned,   1, 140, 216, 225, 52, true,     0),
    new FormField("sig1", FormField.TypeSignature,    1, 140, 288, 225, 52, true,     0),
);
request.TestMode = true;
var response = client.SendSignatureRequest(request);
Console.WriteLine("New Signature Request ID: " + response.SignatureRequestId);

使用上面列出的两个选项之一将字段添加到文档后,您可以使用自定义字段请求参数预填充这些字段。

对此还有一点需要注意的是,您为自定义字段请求参数值提供的名称将需要与您在创建文档时分配给文档字段的名称完全匹配。任何差异都将导致您的自定义字段值未映射到文档上的预期字段。

于 2021-10-12T14:41:35.867 回答