How to display an image in two pages in PDF using jsPDF?

前端 未结 6 1329
庸人自扰
庸人自扰 2020-12-14 05:03

I have a html page. In which I have a button , whenerever I click this button it will convert the entire html page into data image using html2canvas and placed it into PDF u

6条回答
  •  温柔的废话
    2020-12-14 05:30

    I've updated the code. Now works with multiple pages and more precise cuts without happen black background at the end of the cropped image.

    Code

    $('#pdf').on('click', function(){
    
        html2canvas(document.body, {
            onpreloaded: function(){
                  $("#barra").hide(); 
            },
            onrendered: function(canvas) {
                $("#page").hide();
                var imgData = canvas.toDataURL('image/jpeg');              
                options = {
                    orientation: "0",
                    unit: "mm",
                    format: "a4"
                };
                var doc = new jsPDF(options, '', '', '');
                doc.addImage(imgData, 'jpeg', 10, 10, 190, 0);
                var corte = 1620; // configura tamanho do corte
                var image = new Image();
                image = Canvas2Image.convertToJPEG(canvas);
    
                var croppingYPosition = corte;
                var count = (image.height)/corte;
    
    
                for (var i =1; i < count; i++) {
                        doc.addPage();
                        var sourceX = 0;
                        var sourceY = croppingYPosition;
                        var sourceWidth = image.width;
                        var sourceHeight = corte;
                        var destWidth = sourceWidth;
                        var destHeight = sourceHeight;
                        var destX = 0;
                        var destY = 0;
                        var canvas1 = canvas;
                        canvas1.setAttribute('height', (image.height)-(corte*i));
                        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', 10, 10, 190, 0);
                        croppingYPosition += destHeight;              
                    }     
    
    
                doc.save('sample-file.pdf');
                $('canvas').remove();
                $('canvas1').remove();
                $("#page").show();
                $("#barra").show();
            }
        });
    });
    

提交回复
热议问题