c# - 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);
}
}
}
解决方案
考虑将“标题”字段用于“附加信息”。原因字段在PDF中是有意义的,不建议将其用作通用数据信息容器。
推荐阅读
- javascript - 如何从对象列表中过滤掉一个对象?
- reactjs - 为什么使用像 Zusand 组件这样的状态管理器仍然会重新渲染?
- php - PHP学术问题:内部计算
- html - 位置固定或粘到仅在父 div 内滚动
- design-patterns - Java 寻找正确的模式
- python-3.x - 使用 asyncio 使 zeromq 客户端服务器并发
- git - 更新 Moodle 时出现“git pull”致命错误
- reactjs - 如何测试我的输入是否具有 ref 属性?
- php - 在 Laravel 8 中放置逻辑而不是控制器的位置
- c# - 强制一个异步方法按需延迟调用,并在前一个结果过期时再次调用