Foros del Web » Programando para Internet » Javascript »

Problemas al crear PDF con jsPDF

Estas en el tema de Problemas al crear PDF con jsPDF en el foro de Javascript en Foros del Web. Buen día. Espero puedan ayduarme. Tengo un documento en html que deseo convertir a pdf. El html es mas o menos así: ... Código: <body> ...
  #1 (permalink)  
Antiguo 12/01/2016, 18:03
Avatar de mmmarcoo  
Fecha de Ingreso: marzo-2012
Ubicación: Xalapa
Mensajes: 6
Antigüedad: 12 años
Puntos: 0
Pregunta Problemas al crear PDF con jsPDF

Buen día. Espero puedan ayduarme.
Tengo un documento en html que deseo convertir a pdf. El html es mas o menos así:
...
Código:
<body>
<div class="hoja_pdf pdf_0">...</div>
<div class="hoja pdf_1">...</div>
<div class="hoja pdf_2">...</div>
</body>
el numero de divs varía.

El problema que tengo es que a la hora de generarse el PDF no crea todas las páginas, se salta algunas. Esto varía cada vez que se crea el PDF, no siempre crea las mismas, pero casi nunca crea el documento completo. No soy experto en JS, el código es el siguiente:
Código:
var hpdf = null, doc =null;

$("#btn_pdf").on("click", function() {

	doc = new jsPDF({
		unit : 'in',
		format : 'letter',
		orientation : 'landscape'
	});


    $("body").scrollTop(0);

	new Promise(function(done) {

        doc_length = $(".hoja_pdf").length;

        var imgs = new Array();

        $.each($(".hoja_pdf"), function(x,y) {

            hpdf = $(".pdf_" + x);

            get_canvas().then(function(canvas) {

            	imgs[x] = canvas.toDataURL("image/png");

                if (imgs[x] != null && x == (doc_length - 1) ) {

                    console.log("imagenes obtenidas")
                    done(imgs);
                }
            })
    	})

	}).then(function(imgs) {

        return new Promise(function (done) {

            var total_imgs = imgs.length;

            console.log(total_imgs);
            console.log("Creando las páginas...");

            for (i in imgs) {

                console.log(i + " de " + total_imgs);

                add_image(imgs[i], function () {

                    if (imgs[i] != null) {

                        if (i < (total_imgs - 1)) {

                            doc.addPage();

                            console.log("Hoja " + i + " añadida");
                        }
                        if (i == (total_imgs - 1)) {

                            console.log("Imagenes agregadas");
                            done("Proceso terminado");
                        }
                    } else {
                        console.log("No se pudo agregar la imagen, es nula")
                    }
                });
            }
        });

    }).then(function(msg) {
        console.log(msg);
        doc.save("generados.pdf");
    })
});

function add_image(img,callback) {

    if (img != null) {

        doc.addImage({
            imageData : img,
            format : "JPEG",
            x : 0.05,
            y : 0.05
        });

        callback();

    } else {
        console.log("Error al agregar la imagen");
    }

}

function get_canvas() {

    hpdf.width(1010).css("max-width", "none");
    hpdf.height(770);

    return html2canvas(hpdf, { imageTimeout: 2000, remove: true});
}
De antemano gracias.

Etiquetas: html, js, pdf
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 23:42.