Exportar contenido de Canvas a PDF

Estoy trabajando en algo con HTML5 Canvas. Todo está funcionando muy bien, excepto que en este momento, puedo exportar el contenido del canvas a PNG utilizando Canvas2image. Pero me gustaría exportarlo a PDF. Hice algunas investigaciones y estoy bastante seguro de que es posible … pero parece que no puedo entender lo que necesito cambiar en mi código para que funcione. He leído acerca de un complemento llamado pdf.js … pero no puedo encontrar la manera de implementarlo en mi código.

Primera parte :

function showDownloadText() { document.getElementById("buttoncontainer").style.display = "none"; document.getElementById("textdownload").style.display = "block"; } function hideDownloadText() { document.getElementById("buttoncontainer").style.display = "block"; document.getElementById("textdownload").style.display = "none"; } function convertCanvas(strType) { if (strType == "PNG") var oImg = Canvas2Image.saveAsPNG(oCanvas, true); if (strType == "BMP") var oImg = Canvas2Image.saveAsBMP(oCanvas, true); if (strType == "JPEG") var oImg = Canvas2Image.saveAsJPEG(oCanvas, true); if (!oImg) { alert("Sorry, this browser is not capable of saving " + strType + " files!"); return false; } oImg.id = "canvasimage"; oImg.style.border = oCanvas.style.border; oCanvas.parentNode.replaceChild(oImg, oCanvas); showDownloadText(); } 

Y el JS a eso salva la image:

  document.getElementById("convertpngbtn").onclick = function() { convertCanvas("PNG"); } document.getElementById("resetbtn").onclick = function() { var oImg = document.getElementById("canvasimage"); oImg.parentNode.replaceChild(oCanvas, oImg); hideDownloadText(); } } 

Necesita usar 2 complementos para esto: 1) jsPDF 2) canvas-toBlob.js

A continuación, agregue esta pieza de código para generar PDF ligero:

 canvas.toBlob(function (blob) { var url = window.URL || window.webkitURL; var imgSrc = url.createObjectURL(blob); var img = new Image(); img.src = imgSrc; img.onload = function () { var pdf = new jsPDF('p', 'px', [img.height, img.width]); pdf.addImage(img, 0, 0, img.width, img.height); pdf.save(fileName + '.pdf'); }; });