Я работаю над созданием универсального микросервиса, который принимает PDF и отправляет нескольким подписавшимся по электронной почте для подписи.
Я пытаюсь разместить желтое поле (вкладку) в полях PDF, где подписывающее лицо должно подписать. Кажется, есть 3 способа сделать это:
x, y
координаты (не подходит для проекта, так как вызывающей программе будет нелегко попросить измерить PDF-файлы, чтобы обеспечить это)
anchorString
, не идеально, так как редактирование в PDF не рекомендуется
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.