Search code examples
html2canvasjspdf

html2canvas index or size is negative or greater than the allowed amount


i have div which has high charts and table both and want to convert into to pdf using jspdf . When i am using canvas.toDataURL i am getting index or size is negative or greater than the allowed amount.

Appreciate any help


Solution

  • Used the below code but getting black background in few places even though background colour is set to #FFFFFF

    $("#btnSaveAsPDF").click(function () {
                    html2canvas($("#tblSaveAsPdf_canvas"), {
                    onrendered: function (canvas) {
                    var imageData = canvas.toDataURL("image/jpeg");
                    var image = new Image();
                    image = Canvas2Image.convertToJPEG(canvas);
                    var doc = new jsPDF();
                    doc.addImage(imageData, 'JPEG', 12, 10);
                    var croppingYPosition = 1095;
                    count = (image.height) / 1095;
    
                    for (var i =1; i < count; i++) {
                            doc.addPage();
                            var sourceX = 0;
                            var sourceY = croppingYPosition;
                            var sourceWidth = image.width;
                            var sourceHeight = 1095;
                            var destWidth = sourceWidth;
                            var destHeight = sourceHeight;
                            var destX = 0;
                            var destY = 0;
                            var canvas1 = document.createElement('canvas');
                            canvas1.setAttribute('height', destHeight);
                            canvas1.setAttribute('width', destWidth);                         
                            var ctx = canvas1.getContext("2d");
                            ctx.drawImage(image, sourceX, 
                                                 sourceY,
                                                 sourceWidth,
                                                 sourceHeight, 
                                                 destX, 
                                                 destY, 
                                                 destWidth, 
                                                 destHeight);
                            var image2 = new Image();
                            image2 = Canvas2Image.convertToJPEG(canvas1);
                            image2Data = image2.src;
                            doc.addImage(image2Data, 'JPEG', 12, 10);
                            croppingYPosition += destHeight;              
                        }                  
                    var d = new Date().toISOString().slice(0, 19).replace(/-/g, "");
                    filename = 'report_' + d + '.pdf';
                    doc.save(filename);
                }
    
            });
        });