У меня вопрос, как разместить желтую вкладку на основе имен полей PDF - PullRequest
0 голосов
/ 14 июня 2019

Я работаю над созданием универсального микросервиса, который принимает PDF и отправляет нескольким подписавшимся по электронной почте для подписи.

Я пытаюсь разместить желтое поле (вкладку) в полях PDF, где подписывающее лицо должно подписать. Кажется, есть 3 способа сделать это:

  1. x, y координаты (не подходит для проекта, так как вызывающей программе будет нелегко попросить измерить PDF-файлы, чтобы обеспечить это)
  2. anchorString, не идеально, так как редактирование в PDF не рекомендуется
  3. CompositeTemplate кажется, единственный путь. не уверен, что сделано неправильно, эта желтая вкладка просто не будет отображаться.

        byte[] buffer = readFile( docPdf);
        String docBase64 = Base64.getEncoder().encodeToString(buffer);
    
        // Create the DocuSign document object
        Document document = new Document();
        document.setDocumentBase64(docBase64);
        document.setName(docPdf); 
        // can be different from actual file name
        document.setFileExtension("pdf");
        document.setTransformPdfFields("true");
        // many different document types are accepted
        document.setDocumentId("1"); 
        // a label used to reference the doc
    
    
        ArrayList<CompositeTemplate> compList = new ArrayList<CompositeTemplate>();
        CompositeTemplate compoTemplate = new CompositeTemplate();
    
           //Add to Composite template
        compoTemplate.setDocument(document);
    
        //Create Envelope recipients, including them in the first template
        ArrayList<Signer> signers= new ArrayList<Signer>();
    
        Signer signer1 = new Signer ();
        signer1.setEmail("***@***");
        signer1.setName("Jane Doe");
        signer1.setRecipientId("1");
        signer1.setRoleName("Test");
        signer1.setRoutingOrder("1");
    
    
        SignHere signHere1 = new SignHere();
        signHere1.setTabLabel("aaa");
        signHere1.setRecipientId("1");
        signHere1.setDocumentId("1");
        signHere1.setPageNumber("6");
    
        Tabs recipientTabs = new Tabs();
        recipientTabs.setSignHereTabs(Arrays.asList(signHere1));
    
        signer1.setTabs(recipientTabs);
    
        signers.add(signer1);
    
        Recipients recipientList = new Recipients();
        recipientList.signers(signers);
    
        //Create the list for InlineTemplates
    
    
        ArrayList<InlineTemplate> inlineTemplateList = new ArrayList<InlineTemplate>();
        InlineTemplate inlineTemplate = new InlineTemplate();
        inlineTemplate.setSequence ( "1");
        inlineTemplate.setRecipients(recipientList);
    
        inlineTemplateList.add(inlineTemplate);
    
        //Create the composite template, inline template lists.
        compoTemplate.setCompositeTemplateId("1");
        //compoTemplate.ServerTemplates = templateList;
        compoTemplate.setInlineTemplates(inlineTemplateList);
    
        //Take the Composite Template list, add both 
    
        compList.add(compoTemplate);
    
        //Create the definition for the envelope
        EnvelopeDefinition  envelopeDefinition = new EnvelopeDefinition();
        //Add the Composite Template list
       // envelopeDefinition.setCompositeTemplates(templateList);
        envelopeDefinition.setEmailSubject("composite ***** ");
        envelopeDefinition.setCompositeTemplates(Arrays.asList(compoTemplate));
      //  envelopeDefinition.setRecipients(recipientList);
    
        envelopeDefinition.setStatus("sent"); // requests that the envelope be created and sent.
    

1 Ответ

0 голосов
/ 06 июля 2019

см. Это примечание в документе о вкладках (https://developers.docusign.com/esign-rest-api/guides/concepts/tabs):

Важно: имена полей PDF должны совпадать с (чувствительными к регистру) значениями tabLabel вкладок DocuSign, в которые вы хотите перенести значения.Если имена полей PDF соответствуют tabLabel DocuSign, вы можете установить для свойства transformPdfFields значение true для данного документа в массиве документов следующим образом.

(я не вижу свойства tabLabel в вашем коде)

...