2017-02-19 6 views
2

Ich verwende Docusign, um eine Signatur meiner PDF-Dokumente in C# hinzuzufügen.Docusign doppelte Signatur-Tags auf allen Seiten

Ich habe einige HTML-Datei, ich am Ende von HTML div mit Text "SignHere" hinzufügen, dass Docusign wird die Zone für die Signatur erkennen, aber das Problem, dass nach Konvertierung von HTML zu PDF und senden Docusign, dass "SignHere" Option auf allen Seiten, nicht die letzte.

Was ich falsch liege hier falsch?

Mein Code, nach html pdf-Datei konvertieren:

 if (System.IO.File.Exists(PdfPath)) 
          { 
     byte[] fileBytes = System.IO.File.ReadAllBytes(PdfPath); 
     EnvelopeDefinition envDef = new EnvelopeDefinition(); 
     envDef.EmailSubject = envDefEmailSubject; 
     envDef.EventNotification = new EventNotification(); 
     envDef.EventNotification.Url = envDefEventNotificationUrl; 
     envDef.EventNotification.LoggingEnabled = "true"; 
     envDef.EventNotification.IncludeDocuments = "true"; 
     envDef.EventNotification.RequireAcknowledgment = "true"; 
     envDef.EventNotification.IncludeCertificateWithSoap = "false"; 
     envDef.EventNotification.RequireAcknowledgment = "true"; 
     envDef.EventNotification.UseSoapInterface = "false"; 
     envDef.EventNotification.EnvelopeEvents = new List<EnvelopeEvent>(); 
     EnvelopeEvent envelopeEventSent = new EnvelopeEvent(); 
     envelopeEventSent.EnvelopeEventStatusCode = "sent"; 
             envDef.EventNotification.EnvelopeEvents.Add(envelopeEventSent); 
    EnvelopeEvent envelopeEventDelivered = new EnvelopeEvent(); 
    envelopeEventDelivered.EnvelopeEventStatusCode = "delivered"; 
           envDef.EventNotification.EnvelopeEvents.Add(envelopeEventDelivered); 
    EnvelopeEvent envelopeEventSentCompleted = new EnvelopeEvent(); 
    envelopeEventSentCompleted.EnvelopeEventStatusCode = "completed"; 
    envDef.EventNotification.EnvelopeEvents.Add(envelopeEventSentCompleted); 

    Document doc = new Document(); 
    doc.DocumentBase64 = System.Convert.ToBase64String(fileBytes); 
    doc.Name = docName; 
    doc.DocumentId = docDocumentId; 
    envDef.Documents = new List<Document>(); 
    envDef.Documents.Add(doc); 

    Signer signer = new Signer(); 
    signer.Email = Email; 
    signer.Name = signerName + LeadName; 
    signer.RecipientId = signerRecipientId; 
    signer.Tabs = new Tabs(); 

     //Custom Field For LeadId and PdfName 
    envDef.CustomFields = new CustomFields(); 
    envDef.CustomFields.TextCustomFields = new List<TextCustomField>(); 
    TextCustomField textCustomFieldLeadId = new TextCustomField(); 
           textCustomFieldLeadId.Name = "LeadId"; 
           textCustomFieldLeadId.Value = LeadId; 
           textCustomFieldLeadId.Required = "false"; 
           textCustomFieldLeadId.Name = "false"; 
           envDef.CustomFields.TextCustomFields.Add(textCustomFieldLeadId); 

           TextCustomField textCustomFieldSignedPdfName = new TextCustomField(); 
           textCustomFieldSignedPdfName.Name = "SignedPdfName"; 
           textCustomFieldSignedPdfName.Value = SignedPdfName; 
           textCustomFieldSignedPdfName.Required = "false"; 
           textCustomFieldSignedPdfName.Name = "false"; 
           envDef.CustomFields.TextCustomFields.Add(textCustomFieldSignedPdfName); 

           if (SignHereExist) 
           { 
     signer.Tabs.SignHereTabs = new List<SignHere>(); 
     SignHere signHere = new SignHere(); 
     signHere.RecipientId = signHereRecipientId; 
     signHere.AnchorXOffset = signHereAnchorXOffset;  
     signHere.AnchorYOffset = signHereAnchorYOffset; 
     signHere.AnchorIgnoreIfNotPresent = signHereAnchorIgnoreIfNotPresent; 
     signHere.AnchorUnits = "inches"; 
     signHere.AnchorString = signHereAnchorString; 
     signer.Tabs.SignHereTabs.Add(signHere); 



     envDef.Recipients = new Recipients(); 
     envDef.Recipients.Signers = new List<Signer>(); 
     envDef.Recipients.Signers.Add(signer); 
     envDef.Status = "sent"; 

     ApiClient apiClient = new ApiClient("https://demo.docusign.net/restapi"); 
     DocuSign.eSign.Client.Configuration cfi = new DocuSign.eSign.Client.Configuration(apiClient); 
     string authHeader = "{\"Username\":\"" + x+ "\", \"Password\":\"" + x+ "\", \"IntegratorKey\":\"" + x+ "\"}"; 
      cfi.AddDefaultHeader("X-DocuSign-Authentication", authHeader); 

      EnvelopesApi envelopesApi = new EnvelopesApi(cfi); 
      EnvelopeSummary envelopeSummary = envelopesApi.CreateEnvelope(accountID, envDef); 
} 

Antwort

2

Sie verwenden DocuSign Auto-Place (Anchor Tagging) in Ihrer Anfrage.

signHere.AnchorString = signHereAnchorString; 

Dies wird einen Scan auf den Text im Dokument auslösen. Wenn der Scan den Text in der Variablen signHereAnchorString an einer beliebigen Stelle im Dokument findet, wird automatisch die Option "SignHere" neben dem Text platziert. Das ist der Grund, warum Sie „SignHere“ Option auf allen Seiten sehen


Sie haben mehrere Möglichkeiten, wenn Sie den Tag nur auf der letzten Seite

Option 1 platzieren möchten - Mit Anchor Stichworte: (siehe Dokumentation here)

  • ändern Sie bitte Ihre Dokument eine eindeutige Zeichenfolge enthalten, wo Sie die Signatur-Tag platzieren möchten. In diesem Fall können Sie den Text "SignHereLastPage" in weißer Schriftfarbe (so dass er im Dokument nicht sichtbar ist) hinzufügen, zu dem Sie das Signature-Tag auf dem Dokument platzieren möchten. Verwenden Sie "SignHereLastPage" als Ankerzeichenfolge.
  • Sie brauchen nur eine Zeile im Code ändern

    signHere.AnchorString = "SignHereLastPage"; 
    

Option 2 - Feste (oder absolute) Positionierung (siehe Dokumentation here)

  • Sie können die absolute Position von Tags verwenden und angeben, wo das Signatur-Tag platziert werden soll. Siehe Api Rezept here

    signer.Tabs.SignHereTabs = new List<SignHere>(); 
        SignHere signHere = new SignHere(); 
        signHere.DocumentId =docDocumentId; 
        signHere.PageNumber = "1"; // Specify the last Page number here. 
        signHere.RecipientId = signHereRecipientId; 
        signHere.XPosition = "100"; //You can adjust this based on your document 
        signHere.YPosition = "100"; //You can adjust this based on your document 
        signer.Tabs.SignHereTabs.Add(signHere); 
    
Verwandte Themen