mardi 22 mai 2018

TCPDF file download from js application

I've got SPA(ember js), and REST API service - php(laravel 5.2).

I'm trying to download pdf document generated on server

That's how i'm generating pdf

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

if i visit API resource directly in browser everything is fine and file downloads normally.

But when i try to catch response in SPA and initiate download i'm getting empty pdf as a result.

my js download function looks like

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);
    }
},

results variable is a result file string returned from server.

Can someone point out what is wrong here and why my pdf is empty?




Aucun commentaire:

Enregistrer un commentaire