Документ DocuSign пуст после запроса и сохраните - PullRequest
0 голосов
/ 30 ноября 2018

После запроса документа через API DocuSign и записи его в файловую систему он становится пустым после открытия.В документах говорится, что он возвращает «PDF-файл», а тело ответа возвращается, как показано ниже.

const doc = 
    await rp.get(`${apiBaseUrl}/${BASE_URI_SUFFIX}/accounts/${accountId}/envelopes/${envelopeId}/documents/${document.documentId}`,
    {auth: { bearer: token }}
    );

fs.writeFile(document.name, new Buffer(doc, "binary"), function(err) {
        if (err) throw err;
        console.log('Saved!');
});

Тело ответа:

{
"documents": [
    {
        "name": "Name of doc.docx",
        "content": "%PDF-1.5\n%\ufffd\ufffd\ufffd\ufffd\n%Writing objects...\n4 0 obj\n<<\n/Type /Page\n/Resources 5 0 R\n/Parent 3 0 R\n/MediaBox [0 0 612 792 ]\n/Contents [6 0 R 7 0 R 8 0 R 9 0 R 10 0 R ]\n/Group <<\n/Type /Group\n/S /Transparency\n/CS /DeviceRGB\n>>\n/Tabs /S\n/StructParents 0\n>>\nendobj\n5 0 obj\n<<\n/Font <<\n/F1 11 0 R\n/F2 12 0 R\n/F3 13 0 R\n>>\n/ExtGState <<\n/GS7 14 0 R\n/GS8 15 0 R\n>>\n/ProcSet [/PDF /Text ...
    }
]}

Снимок экранадокумента: enter image description here

1 Ответ

0 голосов
/ 03 декабря 2018

Метод API EnvelopeDocuments :: get возвращает сам PDF, а не объект, как вы показываете.

Рабочий пример метода см. пример 7 , часть набора примеров Node.js.

Добавлено

Кроме того, вызов fs.writeFile поддерживает запись из строкового источника.Я бы попробовал:

fs.writeFile(document.name, doc, {encoding: "binary"},
    function(err) {
        if (err) throw err;
        console.log('Saved!');
    });

Неправильная кодировка

Ваш вопрос отображает содержимое pdf в виде строки с управляющими символами, закодированными в виде строк Unicode:

"%PDF-1.5\n%\ufffd\ufffd\ufffd\ufffd\n%Writing objects...

, ноэто не правильно.Начало файла PDF включает двоичные символы, которые не отображаются, кроме как в шестнадцатеричном редакторе.Это то, что вы должны увидеть в верхней части PDF:

enter image description here

Обратите внимание на 10-й символ.Это гекс с4.В вашей строке эквивалентный символ был закодирован как \ufffd (это нормально, что это не один и тот же символ, это два разных PDF-файла).Ваша проблема в том, что символ был закодирован.

Решения

  1. Убедите библиотеку запросов и методы fs.WriteFile не кодировать данные.Или расшифровать его по мере необходимости.См. это решение для библиотеки запросов.
  2. Или используйте SDK DocuSign Node.js, как показано в примере кода, упомянутого выше.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...