2016-12-01 3 views
0

Ich benutze das folgende Javascript, um eine Leinwandaufnahme von Seite zu machen und es in PDF umzuwandeln, aber wenn es die Datei speichert ... kann ich die Datei in PDF I nicht öffnen erhalten die folgende Fehlermeldung „ein Fehler ist aufgetreten Verarbeitung einer Seite. Es war ein Problem, dieses Dokument zu lesen (110)“ ich habe die gleiche Datei im Browser meinem Computer öffnen kann, aber nicht aufFehler beim Öffnen von PDF, das von JSPDF generiert wird Bildbereich

function exportPDF() { 
    var pdf = new jsPDF('l','px'), 
    source = $('body')[0]; 
    var canvasToImage = function(canvas){ 
    var img = new Image(); 
    var dataURL = canvas.toDataURL('image/png'); 
    img.src = dataURL; 
    return img; 
}; 
var canvasShiftImage = function(oldCanvas,shiftAmt){ 
    shiftAmt = parseInt(shiftAmt) || 0; 
    if(!shiftAmt){ return oldCanvas; } 

    var newCanvas = document.createElement('canvas'); 
    newCanvas.height = oldCanvas.height - shiftAmt; 
    newCanvas.width = oldCanvas.width; 
    var ctx = newCanvas.getContext('2d'); 

    var img = canvasToImage(oldCanvas); 
    ctx.drawImage(img,0, shiftAmt, img.width, img.height, 0, 0, img.width, img.height); 

    return newCanvas; 
}; 


var canvasToImageSuccess = function(canvas){ 
    var pdf = new jsPDF('l','px'), 
     pdfInternals = pdf.internal, 
     pdfPageSize = pdfInternals.pageSize, 
     pdfScaleFactor = pdfInternals.scaleFactor, 
     pdfPageWidth = pdfPageSize.width, 
     pdfPageHeight = pdfPageSize.height, 
     totalPdfHeight = 0, 
     htmlPageHeight = canvas.height, 
     htmlScaleFactor = canvas.width/(pdfPageWidth * pdfScaleFactor), 
     safetyNet = 0; 

    while(totalPdfHeight < htmlPageHeight && safetyNet < 15){ 
     var newCanvas = canvasShiftImage(canvas, totalPdfHeight); 
     pdf.addImage(newCanvas, 'png', 0, 0, pdfPageWidth, 0, null, 'NONE'); 

     totalPdfHeight += (pdfPageHeight * pdfScaleFactor * htmlScaleFactor); 

     if(totalPdfHeight < htmlPageHeight){ 
      pdf.addPage(); 
     } 
     safetyNet++; 
    } 

    pdf.save(address.innerHTML + 'test.PDF'); 
}; 

html2canvas(source, { 
    onrendered: function(canvas){ 
     canvasToImageSuccess(canvas); 
    } 
}); 

Antwort

Verwandte Themen