2016-12-02 14 views
2

私は次のJavaScriptコードを持っていますhttps://jsfiddle.net/d72sgwrc/5/私の画面のイメージをCanvasに保存してPDFに保存するとします。ファイルがローカルマシンにダウンロードされると、ブラウザ内でPDFファイルを表示できますが、Acrobat PDFビューアでファイルを開く場合、次のエラーが表示されます。「ページの処理中にエラーが発生しました。このドキュメント(110)準備を進め。私のHTMLページが生成された番号の束を持つだけのテーブルです。JSPDF保存されたファイルがローカルでAcrobatに文書[110]エラーが発生しました

JS

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('test.PDF'); 
}; 
html2canvas(source, { 
    onrendered: function(canvas) { 
     canvasToImageSuccess(canvas); 
    } 
}); 
} 

    exportPDF(); 

HTMLは、私はそれをここに貼り付けるカントとしてJSFiddleであり、私はエラーを取得https://jsfiddle.net/d72sgwrc/5/

私は以下のJSライブラリを使用しています
https://cdnjs.cloudflare.com/ajax/libs/jspdf/1.3.2/jspdf.debug.js

https://fastcdn.org/FileSaver.js/1.1.20151003/FileSaver.min.js

https://cdnjs.cloudflare.com/ajax/libs/html2canvas/0.4.1/html2canvas.min.js

https://cdnjs.cloudflare.com/ajax/libs/jspdf/1.3.2/jspdf.min.js

+0

コードをゆっくりとフィドルにコピーし、リンクを貼り付けるのはクールではありません。あなたは最後の '}'を中止しました。あなたはjQueryや他のライブラリを含んでおらず、あなたのコードは実行されませんでした。私はあなたのフィドルを更新しましたが、あなたはそれを正しく行うにはあまりにも怠惰なので、私はあまりにもあなたを助けるために怠惰です。がんばろう。 –

+0

@ Iwrestledabearonce。いいえ、私はそれを残念です。私はここにコードをしようとしたが、それは私にエラーを与えていた。だから私はそれをjsfiddleにコピーした。私はこれを編集しようとしました –

+0

@ Iwrestledabearonce。私は再び謝罪する、私はそれを修正した –

答えて

1

jspdfデバッグのバージョンは非常に重要です。

<script src="https://code.jquery.com/jquery-3.1.1.js"></script> 
    <script src="https://code.jquery.com/jquery-migrate-1.2.1.min.js"></script> 
    <script src="https://code.jquery.com/ui/1.11.4/jquery-ui.min.js"></script> 
    <script src="https://cdnjs.cloudflare.com/ajax/libs/jspdf/1.3.2/jspdf.debug.js"></script> 
    <script src="https://cdnjs.cloudflare.com/ajax/libs/jspdf/1.3.2/jspdf.min.js"></script> 
     <script src="https://cdn.rawgit.com/MrRio/jsPDF/master/libs/png_support/png.js"></script> 
     <script src="https://cdn.rawgit.comMrRio/jsPDF/master/plugins/addimage.js"></script> 
     <script src="https://cdn.rawgit.com/MrRio/jsPDF/master/libs/png_support/zlib.js"></script> 
1

この同じ問題が発生しました。 jsPDF 1.3.4へのアップグレードは私のためにそれを解決しました。

関連する問題