Как использовать html2canvas и jspdf для правильного и простого экспорта в pdf

В настоящее время я работаю над программным обеспечением для управления школами, которое обычно требует экспорта содержимого html, содержащего data tables и div tag.

Я пробовал все возможные способы написать код, который сможет экспортировать мои html-данные в хорошем смысле, с предпочтительным css. После проверки некоторых вопросов и ответов здесь я попытался использовать spdf, но не повезло.

Он продолжает уничтожать выравнивание моей таблицы, а затем я читал о html2canvas, но для его реализации с jspdf была моя проблема, я хотел бы захватить контент, если тег div с html2canvas затем отправит холст в jspdf, чтобы экспортировать холст в формате pdf.

Вот мой код ниже:

<script src="assets/js/pdfconvert/jspdf.js"></script>
<script src="assets/js/pdfconvert/jspdf.plugin.from_html.js"></script>
<script src="assets/js/pdfconvert/jspdf.plugin.split_text_to_size.js"></script>
<script src="assets/js/pdfconvert/jspdf.plugin.standard_fonts_metrics.js">  </script>
<script src="assets/js/pdfconvert/jspdf.plugin.addhtml.js"></script>
<script src="assets/js/pdfconvert/filesaver.js"></script>
<script src="assets/js/pdfconvert/jspdf.plugin.cell.js"></script>
<script src="assets/js/pdfconvert/html2canvas.js"></script>
<script src="assets/js/pdfconvert/jspdf.plugin.addimage.js"></script>

вот код js

var pdf = new jsPDF('p', 'pt', 'letter');
pdf.addHTML($('#ElementYouWantToConvertToPdf')[0], function () {
pdf.save('Test.pdf');
});

Ответ 1

Я сделал для вас jsfiddle.

 <canvas id="canvas" width="480" height="320"></canvas> 
      <button id="download">Download Pdf</button>

        html2canvas($("#canvas"), {
            onrendered: function(canvas) {         
                var imgData = canvas.toDataURL(
                    'image/png');              
                var doc = new jsPDF('p', 'mm');
                doc.addImage(imgData, 'PNG', 10, 10);
                doc.save('sample-file.pdf');
            }
        });

jsfiddle: http://jsfiddle.net/rpaul/p4s5k59s/5/

Протестировано в Chrome38, IE11 и Firefox 33. Кажется, что есть проблемы с Safari. Тем не менее, Андрей получил работу в Safari 8 на Mac OSx, переключившись на JPEG из PNG. Для получения дополнительной информации см. Его комментарий ниже.