DocuSign Api возвращает строку filebytes, получает пустой или поврежденный файл при попытке преобразовать в PDF - PullRequest
0 голосов
/ 27 мая 2020

Я работаю с docusign api, чтобы получить некоторые документы из конвертов, я получаю всю информацию, но для загрузки PDF я получаю строку «filebytes», и при попытке обработать ее для загрузки я получить просто пустую страницу (не уверен, что это ожидаемый результат, поскольку я использую учетную запись песочницы). Я делаю все это с клиента.

вот что я делаю для обработки строки:

      const pdfBlob = new Blob([Buffer.from(content)], {
    type: 'application/pdf'
  });

  if (window.navigator && window.navigator.msSaveOrOpenBlob) {
    window.navigator.msSaveOrOpenBlob(pdfBlob, filename);
    resolve();
  } else {
    const tempLink = document.createElement('a');
    const url = window.URL.createObjectURL(pdfBlob);

    const clickEvent = new MouseEvent('click', {
      'view': window,
      'bubbles': true,
      'cancelable': false
    });
    tempLink.href = url;
    tempLink.target = '_blank';
    tempLink.download = filename;
    document.body.appendChild(tempLink);
    tempLink.dispatchEvent(clickEvent);
    setTimeout(() => {
      document.body.removeChild(tempLink);
      window.URL.revokeObjectURL(url);
      resolve();
    }, 100);
  }


});

Есть идеи?

1 Ответ

0 голосов
/ 27 мая 2020

Вот сообщение в блоге об этом c топе. Код Node.js следующий (вы должны сделать это с сервера):

// You would need to obtain an accessToken using your chosen auth flow 
let apiClient = new ApiClient(basePath);
let config = new docusign.Configuration(apiClient);
config.addDefaultHeader('Authorization', 'Bearer ' + accessToken);
let envelopesApi = new docusign.EnvelopesApi(config); 
var accountId; // accountId for your DocuSign account
var envelopeId; // envelopeId that you are working on
// produce a ZIP file with all documents including the CoC
let results1 = await envelopesApi.GetDocument(accountId, envelopeId, 'archive', null);
// produce a PDF combining all signed documents as well as the CoC
let results2 = await envelopesApi.GetDocument(accountId, envelopeId, 'combined', null);
// produce a particular document with documentId '1'
let results3 = await envelopesApi.GetDocument(accountId, envelopeId, '1', null);
//TODO - use byte array to write or send the file for your use

Если ваш код или этот код возвращает пустую страницу, пожалуйста, подтвердите, что вы не получите его, если вы используете Веб-приложение DocuSign, возможно, оно пустое? Пожалуйста, помните кодировку, это использование 64-битной кодировки для получения битов в REST API.

...