Как я могу динамически добавлять разрывы страниц в jspdf, чтобы предотвратить разбиение таблиц на две страницы? - PullRequest
1 голос
/ 29 мая 2019

Я пытаюсь создать веб-страницу, которая экспортирует информацию базы данных в PDF, с таблицами, которые извлекаются из базы данных с помощью PHP и MySQL.

Мои таблицы имеют переменной длины и могут иногда включать более одной таблицы, потенциально до 3 + таблиц .

В случае, если исходная таблица будет занимать большой объем пространства на странице, что вторая таблица будет разбита на последующие страницы, как бы я сказал jspdf вернуться к предыдущему тегу <table> и вставить перед страницей? (то есть, если какая-либо строка таблицы 2+ сломается и переместится на следующую страницу, переместите всю таблицу на следующую страницу).

Я рассмотрел попытку сканирования и подсчета тегов <tr>, чтобы получить счетчик, и пытался установить оператор if-else для отправки таблицы на следующую страницу, но я не знаю, как это будет работать для более чем двух таблиц.

<script>
  //this my current idea of the code, none of it is implemented or tested
  $(document).on('load', function(e) { //when the pages loads, execute this function
    var PDF_WIDTH = 816;
    var PDF_HEIGHT = (PDF_Width * 1.2941); //for a 8.5*11 Letter sized pdf
    var rowCount = 0;
    var tableCount = 0;

    $(tr).each(function(e) { //counts all the rows that exists on the page
      var rowCount++;
    });

    $(table).each(function(e) { //counts all the tables that exist on the page
      var tableCount++;
    });

    if (rowcount > 36) { //if the total number of rows would exceed the amount of rows displayed on the page
      var pdf = new jsPDF('p', 'pt' [PDF_WIDTH, PDF_HEIGHT]);
      //??? trying to select the table that would break 
      //??? add a page break before the second table
      //alternatively append a page break after the first table
    }
  });
</script>

1 Ответ

0 голосов
/ 29 мая 2019

Вы должны попробовать плагин jspdf для автозапуска.https://github.com/simonbengtsson/jsPDF-AutoTable и посмотрите примеры для нескольких таблиц

...