2016-12-01 1 views
0

다음 자바 스크립트를 사용하여 캔버스 샷을 찍은 다음 PDF로 변환합니다. 그러나 파일을 저장할 때 ... PDF로 파일을 열 수 없습니다. "페이지 처리 오류가 발생했습니다.가이 문서 (110) 읽는 데 문제였다"다음과 같은 오류가 내 컴퓨터의 브라우저에서 동일한 파일을 열 수는 없지만이JSPDF 이미지 캔버스에서 생성 된 PDF 열기 오류

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

답변