html2canvas - вторая страница модального AngularJS обрезана посередине - PullRequest
0 голосов
/ 16 декабря 2018

Я использую эту функцию, чтобы сделать скриншот вида и загрузить его в формате PDF.У меня проблема с тем, что мой второй pdf будет обрезан по любой причине - onePageCanvas.toDataURL ("image / png", 0.92); по-прежнему имеет вырезанный контент.Я много пробовал, но безуспешно.Кто-нибудь знает, что я должен сделать, чтобы полностью распечатать все содержимое всех страниц?

function makePDF(container, pdfName) {
        var quotes = container;
        html2canvas(quotes, {
            onrendered: function(canvas) {

            var pdf = new jsPDF('p', 'pt', 'letter');

            var loop = Math.ceil(quotes.clientHeight/980);
            for (var i = 0; i <= loop; i++) {
                var srcImg  = canvas;
                var sX      = 0;
                var sY      = 980*i;
                var sWidth  = 900;
                var sHeight = 980;
                var dX      = 0;
                var dY      = 0;
                var dWidth  = 900;
                var dHeight = 980;

                window.onePageCanvas = document.createElement("canvas");
                onePageCanvas.setAttribute('width', 900);
                onePageCanvas.setAttribute('height', 980);
                var ctx = onePageCanvas.getContext('2d');
                ctx.drawImage(srcImg,sX,sY,sWidth,sHeight,dX,dY,dWidth,dHeight);
                var canvasDataURL = onePageCanvas.toDataURL("image/png", 0.92);

                var width         = onePageCanvas.width;
                var height        = onePageCanvas.clientHeight;

                var pageHeight = pdf.internal.pageSize.height;

                if (i > 0) {
                    pdf.addPage(612, pageHeight);
                }
                pdf.setPage(i+1);
                pdf.addImage(canvasDataURL, 'PNG', 20, 40, (width*0.62), (height*0.62));

            }
            var today = new Date();
            pdf.save(pdfName + '_' + today.getFullYear() + (today.getMonth()+1) + today.getDate());
        }
      });
    }
...