首页 > 解决方案 > C#.Net DocuSign 签名位置

问题描述

我对签名位置的查询。 当前方法:现在我们使用外观标签将签名放在文档中。我在原因标签中添加数据并将其与外观标签绑定,并使用“X”和“Y”标签提及位置。 需要更改:需要在签名框内添加原因标签(用户信息)。我们的客户在同一文档的多个位置提供带有签名框的文档(使用 DocuSign)。我需要在签名框中添加原因标签(用户信息),而不是使用外观标签。我在这里分享代码部分。

using RestSharp;
using System;
using System.IO;
using Newtonsoft.Json.Linq;

namespace DSARestCsharpSample
{
    class Program
    {
        static void Main(string[] args)
        {
            String baseURL ​​​​​= "https://prime-dsa-devctr.docusign.net:8081%22;
            String resourcePath = "sapiws/v1/digital_signature";
            String apiUrl = baseURL + "/" + resourcePath;
            var client = new RestClient(apiUrl);

            var request = new RestRequest(Method.PUT);
            request.AddHeader("content-type", "application/json");
            request.AddHeader("authorization", "Basic " + DSABasicAuthorizationString("{dsa-user-name}", "{dsa-user-password}"));
            // "digital_signature" request body as Json formated String (use JavaScriptSerializer or Newtonsoft.Json to build from object) 
            String DigSigRequestBody =  
                "{ \"CreateAndSignField\" : " + //structure name specifies the operation / function
                    "{   \"file\": " + "\"" + File2Base64String("c:\\tmp\\PurchaseOrder.pdf") + "\", " +
                        "\"fileType\": \"PDF\", " +
                            "\"x\": \"" + DOCUSIGN_X + "\", " +
                            "\"y\": \"" + DOCUSIGN_Y + "\", " +
                            "\"width\": \"187\", " +
                            "\"height\": \"38\", " +
                            "\"page\": \"1\", " +
                            "\"timeFormat\": \"h:mm:ss\", " +
                            "\"dateFormat\": \"dd/MM/yyyy\", " +                    
                             "\"appearance\": \"100\", " +
                             "\"SigFieldName\": \"Employee\", " +
                              "\"Reason\": \"" + REASON + "\", " +
                               "\"Flags\": \"0\", " +
                                 "\"RetFileMode\": \"0\", " +
                                   "\"RetSigFieldMode\": \"0\", " +
                                   "\"appearance\": [\"Reason\", \"TIME\"]" +
                    "}" +
                "}";
            request.AddParameter("application/json", DigSigRequestBody, ParameterType.RequestBody);

            IRestResponse response = client.Execute(request);

            JObject joResponse = JObject.Parse(response.Content);

            Base64String2Path(joResponse["signedFile"].Value<string>(), "c:\\tmp\\PurchaseOrder.DSA-REST-SIGNED.pdf");
        }

        private static void Base64String2Path(string Base64String, string FilePath)
        {
            Byte[] bytes = Convert.FromBase64String(Base64String);
            File.WriteAllBytes(FilePath, bytes);
        }

        private static String File2Base64String(String FilePath)
        {
            Byte[] bytes = File.ReadAllBytes(FilePath);
            String fileB64Data = System.Convert.ToBase64String(bytes);
            return fileB64Data;
        }

        private static String DSABasicAuthorizationString(String username, string password)
        {
            var DSABasicAuthorizationBytes = System.Text.Encoding.UTF8.GetBytes(username+":"+password);
            return System.Convert.ToBase64String(DSABasicAuthorizationBytes);
        }
    }
}

标签: c#asp.net-mvcdocusignapi

解决方案


考虑将“标题”字段用于“附加信息”。原因字段在PDF中是有意义的,不建议将其用作通用数据信息容器。


推荐阅读