Почему 'atob' в проблеме кодирования 'Window' на сервере, но не локально (laravel valet)? - PullRequest
0 голосов
/ 11 сентября 2018

Я использую jquery для выбора всех URL-адресов изображений из всех img-тегов с классом .my-images

Затем я пытаюсь поместить их в файл PDF с jsPDF. Как это:

//Creating the PDF
var doc = new jsPDF()

//Getting all the images
var images = $('.my-images').map(function(){
    return this.src;
}).get();

//Looping through the images and adding a page for each
var iterations = 1;
images.forEach(function(element) {
    if(iterations > 1){
        doc.addPage();
    }
    console.log(element);
    doc.addImage(element, 'image/png', 10, 10, 190, 277);
    iterations = ++iterations;
});

doc.save('a4.pdf')

Так что теперь к моей проблеме. Локально, где я использую laravel-valet, все работает просто отлично! Действительно даже хорошо.

Но когда я отправляю его на сервер, я получаю:

Uncaught DOMException: не удалось выполнить 'atob' в 'Window': строка, которая должна быть декодирована, неправильно закодирована.

Я немного прочитал об этом и попробовал atob и btoa , но затем он немедленно ломается локально ... Я не нашел других сообщений об этом странном поведении. Есть идеи, как поступить?

1 Ответ

0 голосов
/ 12 сентября 2018

через часы и часы ... Я действительно не знаю, в чем проблема была точно ... но я знаю ответ.Вместо того, чтобы добавлять только URL прямо из DOM-выбора, вам нужно создать экземпляр класса Image.как это:

//Creating the PDF
var doc = new jsPDF()

//Getting all the images
var images = $('.my-images').map(function(){
    return this.src;
}).get();

//Looping through the images and adding a page for each
var iterations = 1;
images.forEach(function(element) {
    if(iterations > 1){
        doc.addPage();
    }

    var img = new Image();
    //Then just add the url as a attribute
    img.src = element;

    //THEN add the image to the pdf
    doc.addImage(img, 'image/png', 10, 10, 190, 277);

    iterations = ++iterations;
});

doc.save('a4.pdf')

БУМ, и вы получили его там.Я полагаю, что некоторая кодировка, которая нравится jsPDF, происходит при добавлении ее в класс Image.

...