2014-09-04 2 views
-1

Мне нужно знать, как отправить штамп с pdf-кодом для подписчиков для цифрового подписания. PDF штампован с использованием itextsharpКак отправить PDF, используя docusign rest api в asp.net?

Мне нужен идентификатор конверта для api? Как я могу прикрепить штамп для отправки по электронной почте с помощью docusign?

Функция

Private pdfFormFileName As String = "myAcrobatFormFile.pdf" 

Sub Print_Click(ByVal sender As Object, ByVal e As CommandEventArgs) 
    Dim sUniqueKey As String 
    Dim dr As OdbcDataReader 
    Dim sql As String 
    Dim reader As PdfReader 
    Dim sFileName As String = "" 

    Dim sArray As Array 

    sUniqueKey = e.CommandArgument 
    sArray = sUniqueKey.Split(",") 

    sql = "select " 
    sql += "name," 
    sql += "id" 
    sql += " from table" 
    sql += " where key1=" & sArray(0) 
    sql += " and key2=" & sArray(1) 

    oFnc.OpenODBC() 

    selectCommand = New OdbcCommand(sql, oFnc.connWeb) 
    dr = selectCommand.ExecuteReader 
    If dr.Read Then 

     reader = New PdfReader(server.mappath(pdfFormFileName)) 

     sFileName = "data/" & oFnc.GetTimeStamp & "displayForm.pdf" 

     Dim stamper As PdfStamper = New PdfStamper(reader, New System.IO.FileStream(Server.MapPath(sFileName), FileMode.Create)) 


     Dim fields As AcroFields 
     fields = stamper.AcroFields 


     With fields 
      .SetField("txtName", Left(dr("name"), 20)) 
      .SetField("txtId", dr("id") 
     End With 
     stamper.FormFlattening = True 
     stamper.Close() 

    End If 
    dr.Close() 

    oFnc.CloseODBC() 
End Sub 

Как отправить этот XML

<?xml version="1.0" encoding="UTF-8"?> 
<envelopeDefinition   
xmlns="http://www.docusign.com/restapi"xmlns:xsi="http://www.w3.org/2001/XMLSchema-  
instance"xmlns:xsd="http://www.w3.org/2001/XMLSchema"> 
<emailBlurb>Annual contract</emailBlurb> 
<emailSubject>API Call for adding signature request to document and  
sending</emailSubject> 
<status>sent</status> 
<documents> 
    <document> 
    <documentId>1</documentId> 
    <name>myAcrobatFormFile.pdf</name> 
    </document> 
</documents> 
<recipients> 
    <signers> 
    <signer> 
     <recipientId>2</recipientId> 
     <email>[email protected]</email> 
     <name>Bob Smith</name> 
    </signer> 
    </signers> 
</recipients> 
</envelopeDefinition> 
+0

прочитал это его может быть полезной HTTP: //www.codeproject. com/Статьи/14488/E-sign-PDF-documents-with-iTextSharp –

+0

У меня есть код в формате PDF, который работает в настоящее время. PDF-файл просто нуждается в цифровой подписи docusign. Мне нужен спокойный код api для отправки PDF. –

+0

Я прочитал проект кода, и это было не то, что я хочу. Я не хочу добавлять подписанную подпись в pdf через stamper. Я хочу отправить PDF-документ docusign, который был отмечен для получателя, чтобы цифровой знак, используя облако docusign. –

ответ

1

DocuSign API пошаговые руководства, что вы нашли большие примеры того, как это сделать, и API Explorer, это еще один отличный инструмент, который показывает, как выполняются вызовы REST. Оба из них можно найти на странице API Tools в Центре разработчиков:

https://www.docusign.com/developer-center/quick-start/api-explorer

В API Explorer, позволяет сделать любой вызов API без написания кода. Вы просто вводите свои учетные данные в верхней части страницы, выбираете, какой вызов вы хотите сделать, заполните параметры (если необходимо) и нажмите кнопку TRY IT.

К сожалению, в Пошаговом руководстве API нет примеров Visual Basic. Однако есть примеры C# (.NET другой технологии), в частности, в этом пример для запроса подписи на локальный файл:

http://iodocs.docusign.com/APIWalkthrough/requestSignatureFromDocument

0
Sub login_click(ByVal sender As Object, ByVal e As System.EventArgs) 
    'Dim oClient = New WebClient 
    Dim sUrl As String = "https://demo.docusign.net/restapi/v1/login_information?api_password=true&include_account_id_guid=true&login_settings=all" 
    Dim sEmail As String = "[email protected]" 
    Dim sPassword As String = "mypassword" 
    Dim sIntegratorKey As String = "myintegratorkey" 
    Dim sDocumentName As String = "mypdfdocument.pdf" 
    Dim sContentType As String = "application/pdf" 

    Dim oRequest As HttpWebRequest 
    oRequest = initializeRequest(sUrl, "GET", "", sEmail, sPassword, sIntegratorKey) 


    Dim oResponse As HttpWebResponse = oRequest.GetResponse 
    Dim baseURL As String = "" 
    Dim oStreamReader As StreamReader = New StreamReader(oResponse.GetResponseStream) 
    Dim sXML As String = oStreamReader.ReadToEnd 
    baseURL = parseDataFromResponse(sXML, "baseUrl") 
    Dim sXmlBody As String 
    sXmlBody = "<envelopeDefinition xmlns='http://www.docusign.com/restapi'>" & _ 
       "<emailSubject>DocuSign API</emailSubject>" & _ 
       "<status>sent</status>" & _ 
       "<documents>" & _ 
       "<document>" & _ 
       "<documentId>1</documentId>" & _ 
       "<name>" & sDocumentName & "</name>" & _ 
       "</document>" & _ 
       "</documents>" & _ 
       "<recipients>" & _ 
       "<signers>" & _ 
       "<signer>" & _ 
       "<recipientId>1</recipientId>" & _ 
       "<email>[email protected]</email>" & _ 
       "<name>John Smith</name>" & _ 
       "<tabs>" & _ 
       "<signHereTabs>" & _ 
       "<signHere>" & _ 
       "<xPosition>100</xPosition>" & _ 
       "<yPosition>100</yPosition>" & _ 
       "<documentId>1</documentId>" & _ 
       "<pageNumber>1</pageNumber>" & _ 
       "</signHere>" & _ 
       "</signHereTabs>" & _ 
       "</tabs>" & _ 
       "</signer>" & _ 
       "</signers>" & _ 
       "</recipients>" & _ 
       "</envelopeDefinition>" 

    sUrl = baseURL & "/envelopes" 

    oRequest = initializeRequest(sUrl, "POST", "", sEmail, sPassword, sIntegratorKey) 

    configureMultiPartFormDataRequest(oRequest, sXmlBody, sDocumentName, sContentType) 

    Dim sMessage As String 
    sMessage = getResponseBody(oRequest) 
    MsgBox(sMessage) 
    'Dim sUri As String = parseDataFromResponse(sXML, "uri") 

End Sub 
Function getResponseBody(ByRef oRequest As HttpWebRequest) As String 
    Dim oResponse As HttpWebResponse = oRequest.GetResponse 
    Dim oStreamReader As StreamReader = New StreamReader(oResponse.GetResponseStream) 
    Dim sResponseString As String = oStreamReader.ReadToEnd 
    Return (sResponseString) 
End Function 

Sub configureMultiPartFormDataRequest(ByRef oRequest As HttpWebRequest, sXmlBody As String, sDocumentName As String, sContentType As String) 
    oRequest.ContentType = "multipart/form-data; boundary=BOUNDARY" 
    Dim sRequestBodyStart As String = "\r\n\r\n--BOUNDARY\r\n" & _ 
     "Content-Type: application/xml\r\n" & _ 
       "Content-Disposition: form-data\r\n" & _ 
       "\r\n" & _ 
       sXmlBody & "\r\n\r\n--BOUNDARY\r\n" & _ 
       "Content-Type: " & sContentType & "\r\n" & _ 
       "Content-Disposition: file; filename='" & sDocumentName & "'; documentId=1\r\n" & _ 
       "\r\n" 
    Dim sRequestBodyEnd As String = "\r\n--BOUNDARY--\r\n\r\n" 
    Dim oFileStream As FileStream = File.OpenRead(Server.MapPath(sDocumentName)) 
    Dim bodyStart As Byte() = System.Text.Encoding.UTF8.GetBytes(sRequestBodyStart.ToString) 
    Dim bodyEnd As Byte() = System.Text.Encoding.UTF8.GetBytes(sRequestBodyEnd.ToString) 
    Dim oDataStream As Stream = oRequest.GetRequestStream 
    oDataStream.Write(bodyStart, 0, sRequestBodyStart.ToString.Length()) 
    Dim buffer(4096) As Byte 
    Dim iLen As Integer = 0 
    iLen = oFileStream.Read(buffer, 0, 4096) 
    Do While iLen > 0 
     oDataStream.Write(buffer, 0, iLen) 
     iLen = oFileStream.Read(buffer, 0, 4096) 
    Loop 

    oDataStream.Write(bodyEnd, 0, sRequestBodyEnd.ToString.Length()) 
    oDataStream.Close() 

End Sub 

Function initializeRequest(sUrl As String, sMethod As String, sBody As String, sEmail As String, sPassword As String, sIntegratorKey As String) As HttpWebRequest 
    Dim oRequest As HttpWebRequest 

    oRequest = WebRequest.Create(sUrl) 
    oRequest.KeepAlive = False 
    oRequest.Method = sMethod 

    AddRequestHeaders(oRequest, sEmail, sPassword, sIntegratorKey) 
    If sBody <> "" Then 
     AddRequestBody(oRequest, sBody) 
    End If 


    Return (oRequest) 
End Function 
Sub AddRequestHeaders(ByRef oRequest As HttpWebRequest, sEmail As String, sPassword As String, sIntegratorKey As String) 
    oRequest.Headers.Add("X-DocuSign-Authentication", 
     String.Format("<DocuSignCredentials><Username>{0}</Username><Password>{1}</Password><IntegratorKey>{2}</IntegratorKey></DocuSignCredentials>", sEmail, sPassword, sIntegratorKey)) 

    oRequest.Accept = "application/xml" 
    oRequest.ContentType = "application/xml" 
End Sub 
Sub addRequestBody(ByRef oRequest As HttpWebRequest, sRequestBody As String) 
    Dim body As Byte() = System.Text.Encoding.UTF8.GetBytes(sRequestBody) 
    Dim oDataStream As Stream = oRequest.GetRequestStream 
    oDataStream.Write(body, 0, sRequestBody.Length) 
    oDataStream.Close() 

End Sub 
Function parseDataFromResponse(sXML As String, sSearchToken As String) As String 
    Dim oXmlReader As XmlReader = XmlReader.Create(New StringReader(sXML)) 
    Do While oXmlReader.Read() 
     If oXmlReader.NodeType = XmlNodeType.Element And oXmlReader.Name = sSearchToken Then 
      Return oXmlReader.ReadString() 
     End If 
    Loop 
    Return "" 
End Function 
+0

Я получаю ошибку 404. Зачем? –

+0

Файловый поток считывает pdf-файл в поток запросов и затем пытается его опубликовать. Сервер отклоняет сообщение, но сообщение об ошибке нечеткое. –

+0

Как запросить подпись? Http: //iodocs.docusign.com/APIWalkthrough/requestSignatureFromDocument –

Смежные вопросы