2012-11-02 12 views
5

Sto lavorando su qualcosa utilizzando HTML5 Canvas. Funziona tutto alla grande, tranne che ora, posso esportare il contenuto della tela in PNG usando Canvas2image. Ma vorrei esportarlo in PDF. Ho fatto delle ricerche e sono abbastanza sicuro che sia possibile ... ma non riesco a capire cosa ho bisogno di cambiare nel mio codice per farlo funzionare. Ho letto di un plugin chiamato pdf.js ... ma non riesco a capire come inserirlo nel mio codice.Esporta contenuto Canvas in PDF

Prima 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(); 
    } 

E la JS a che salva l'immagine:

document.getElementById("convertpngbtn").onclick = function() { 
     convertCanvas("PNG"); 
    } 

    document.getElementById("resetbtn").onclick = function() { 
     var oImg = document.getElementById("canvasimage"); 
     oImg.parentNode.replaceChild(oCanvas, oImg); 

     hideDownloadText(); 
    } 

} 

risposta

0
+0

Il primo collegamento sembra molto interessante. Il fatto è che non sembra che stia salvando il contenuto della tela. La tela non ha nulla in essa all'inizio. Solo dopo che la pagina si carica, disegna lo sfondo, ma all'inizio è vuoto. Quindi salva un PDF di una tela bianca. E per il secondo link, salva solo il testo e i collegamenti, non le immagini ancora ... (Se ho capito bene). Grazie comunque! – larin555

1

È necessario utilizzare 2 plugin per questo: 1) jsPDF 2) canvas-toBlob.js

Quindi aggiungere questo pezzo di codice per generare il peso leggero PDF:

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'); 
    }; 
}); 
+1

** In alternativa, ma nello stesso tema **: Se si utilizza 'jspdf.min.js' nella cartella' dist' di jsPDF, è possibile inviare 'canvas.toDataURL()' in 'pdf.addImage' in modo da non indossare 't bisogno direttamente di 'canvas-toBlob.js'. – markE