pdfmake base64 image callback - PullRequest
       17

pdfmake base64 image callback

0 голосов
/ 20 сентября 2019

Мне нужно работать с pdfmake, чтобы создать предварительный просмотр pdf в моем приложении laravel.Я нуб Javascript и схожу с ума, чтобы сгенерировать dataURI для изображения в б.Надеюсь, ты сможешь мне помочь.Как я могу получить этот сгенерированный base64 в мое определение документа?

    function convertImageToDataURL(src, callback, outputFormat) {
        // Create an Image object
        var img = new Image();
        // Add CORS approval to prevent a tainted canvas
        img.crossOrigin = 'Anonymous';
        img.onload = function() {
            var canvas = document.createElement('CANVAS');
            var ctx = canvas.getContext('2d');
            var dataURL;
            canvas.height = this.naturalHeight;
            canvas.width = this.naturalWidth;
            ctx.drawImage(this, 0, 0);
            dataURL = canvas.toDataURL(outputFormat);
            callback(dataURL);

            // Mark the canvas to be ready for garbage
            // collection
            canvas = null;
        };

        img.src = src;
        // make sure the load event fires for cached images too
        if (img.complete || img.complete === undefined) {
            // Flush cache
            img.src = 'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///ywAAAAAAQABAAACAUwAOw==';
            // Try again
            img.src = src;
        }
    }

    convertImageToDataURL(
        '{{asset('storage/'.$report->author->enterprises->first()->logo_image)}}',
        function(dataUrl) {
            // console.log('RESULT:', dataUrl);
            // Put dataUrl into DocDefinition here!?!?
            // return dataUrl is undefined
        }
    );`

1 Ответ

0 голосов
/ 21 сентября 2019

Хорошо.Как я уже сказал: я нуб Javascript.Поэтому я изменил сценарий на этот:

function convertImageToDataURL(imgSrc) {
        img = new Image();
        img.src = imgSrc;
        img.crossOrigin = "Anonymous";

        var canvas = document.createElement("canvas");
        canvas.width = img.naturalWidth;
        canvas.height = img.naturalHeight;
        var ctx = canvas.getContext("2d");
        ctx.drawImage(img, 0, 0);
        var dataURL = canvas.toDataURL("image/jpg");

        canvas = null;
        return dataURL;
    }

Это может быть не красиво и не элегантно, но у меня работает.

...