Загрузка файла TCPDF из приложения js - PullRequest
0 голосов

У меня есть SPA (ember js) и служба REST API - php (laravel 5.2).

Я пытаюсь загрузить документ PDF, созданный на сервере

Вот так ягенерирую pdf

$tcpdf->Output({path}, 'I');

, если я захожу на ресурс API прямо в браузере, все в порядке, и файл загружается нормально.

Но когда я пытаюсь отловить ответ в SPA и начать загрузку, яв результате получается пустой pdf.

Моя функция загрузки js выглядит так:

this.download(results, 'test.pdf','application/pdf')

download(data, filename, mime) {
    var blob = new Blob([data], {type: mime || 'application/octet-stream'});
    if (typeof window.navigator.msSaveBlob !== 'undefined') {
        // IE workaround for "HTML7007: One or more blob URLs were
        // revoked by closing the blob for which they were created.
        // These URLs will no longer resolve as the data backing
        // the URL has been freed."
        window.navigator.msSaveBlob(blob, filename);
    }
    else {
        var blobURL = window.URL.createObjectURL(blob);
        var tempLink = document.createElement('a');
        tempLink.style.display = 'none';
        tempLink.href = blobURL;
        tempLink.setAttribute('download', filename);

        // Safari thinks _blank anchor are pop ups. We only want to set _blank
        // target if the browser does not support the HTML5 download attribute.
        // This allows you to download files in desktop safari if pop up blocking
        // is enabled.
        if (typeof tempLink.download === 'undefined') {
            tempLink.setAttribute('target', '_blank');
        }

        document.body.appendChild(tempLink);
        tempLink.click();
        document.body.removeChild(tempLink);
        window.URL.revokeObjectURL(blobURL);
    }
},

Переменная результатов - это строка файла результатов, возвращаемая с сервера.

Кто-то может указать, что здесь не так и почему мой PDF-файл пуст?

...