При скачивании билетов на мероприятие срабатывает функция, которая переводит билет в canvas

Рейтинг: 0Ответов: 0Опубликовано: 31.01.2023

При скачивании билетов на мероприятие срабатывает функция, которая переводит билет в canvas. Используются библиотеки html2canvas и jspdf. Происходит повторная загрузка файлов. Хотелось бы разобраться. Это так работают эти библиотеки или где-то ошибка в коде. Если так работают библиотеки, как это можно избежать. Спасибо.

vs.addScript('/static/vendor/jspdf/dist/jspdf.min.js',function(){
        vs.addScript('/static/vendor/html2canvas/dist/html2canvas.min.js',function(){

            // document.domain
            html2canvas(document.getElementById(id), {
                onclone: function (doc) {

                    let item_ticket = doc.querySelectorAll('.item-ticket');
                    item_ticket.forEach(el => {
                        el.style.boxShadow = 'none',
                        el.style.border    = '1px solid #333'
                    })

                    let advert_items = doc.querySelectorAll('.advert_items')
                    advert_items.forEach((el) => {
                        el.remove();
                    })

                    let wrapper_info = doc.querySelectorAll('.wrapper_info');

                    wrapper_info.forEach(el => {
                        el.style.boxShadow = 'none'
                    })
                },
                useCORS: true,
                allowTaint: true

            }).then(canvas => {

                let quality = 1;
                let myImage = {
                    data: canvas.toDataURL('image/jpeg', quality),
                    height: canvas.height,
                    width: canvas.width
                };

                let w = Math.floor(myImage.width * 0.264583);
                let h = Math.floor(myImage.height * 0.264583);
                let orientation = w > h ? 'l' : 'p';
                let docPDF = new jsPDF(orientation, 'mm', [w, h]);
                docPDF.addImage(myImage.data, 'JPEG', 0, 0);
                docPDF.save('ticket.pdf');

            }).then(() => vs.loaderOff())
        });
    });

введите сюда описание изображения

Ответы

Ответов пока нет.