Создайте многостраничный PDF-файл из динамически создаваемой таблицы (div) размером больше одной страницы.

Я динамически создаю таблицу с использованием php и mysql в содержащий div и затем печатаю ее, используя jsPDF, Все хорошо, пока таблица не превышает одну страницу. Тогда все, что я получаю, это первая страница. Я потратил недели, часы чтения, попытки и тестирования и просто не могу заставить его напечатать больше, чем первая страница.

Вот что у меня есть:

<!-- jsPDF Scripts -->
<script src="//mrrio.github.io/jsPDF/dist/jspdf.debug.js"></script>
<script src="//html2canvas.hertzen.com/build/html2canvas.js"></script>

$(document).ready(function() {

$("#pdfDiv").click(function() {

var pdf = new jsPDF('p','pt','letter');pdf.addHTML($('#rentalListCan').first(), function() {
pdf.save("rentals.pdf");
});
});
});

Я попытался напечатать страницу напрямую, но форматирование не выполняется.

Я пробовал css используя @page с page-break-inside: auto но это не создает разрывы страниц. Спасибо за вашу помощь.

1

Решение

Чтобы решить вашу проблему, есть два подхода, которые мне известны —

  1. Предоставление опций на странице для разделения

    варианты = {
    разделение страниц: правда
    };

    А потом —

    pdf.addHTML($('#someDiv'), marginX,  marginY, options, function() {
    pdf.save("doc.pdf");
    });
    

Обратите внимание, что это может плохо разделить вашу таблицу (попробуйте, и вы увидите) — одну вещь, которую вы можете сделать, это добавить пустое пространство между строками, которые разделяются непосредственно перед печатью страницы в формате pdf.
Это происходит потому, что fromHTML () преобразует таблицу в холст, а затем разбивает холст в соответствии с размером страницы PDF.

  1. Используя такой плагин — https://github.com/Prashanth-Nelli/jsPdfTablePlugin

Но настройка таблицы в стиле здесь пока не поддерживается. Но вы можете настроить шрифт и цвета. Если ваша таблица достаточно проста, это отличный и простой в использовании плагин.

Надеюсь это поможет!

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]