jsPDF Большая таблица, заголовки перекрываются на второй странице

Я использую jsPDF и svg_to_pdf для экспорта SVG и таблицы в PDF. Это мой код:

function svg_to_pdf(svg, callback) {

console.log("svgtopdf.js");
svgAsDataUri(svg, {}, function(svg_uri) {
var image = document.createElement('img');

image.src = svg_uri;
image.onload = function() {
  var canvas = document.createElement('canvas');
  var context = canvas.getContext('2d');
  var doc = new jsPDF('portrait', 'pt', 'a4', true);
  var dataUrl;

  source = $('#datos_alumnos')[0];
  specialElementHandlers = {
      '#bypassme' : function(element, renderer){
          return true;
      }
  };

  margins = {
            top: 40,
            bottom: 60,
            left: 40,
            width: 270
        };


  canvas.width = image.width;
  canvas.height = image.height;
  context.drawImage(image, 0, 0, image.width, image.height);
  dataUrl = canvas.toDataURL('image/jpeg');
  doc.addImage(dataUrl, 'JPEG', 0, 0, 500, 263);


  doc.fromHTML(
    source,
    40,
    270, {
        'width': 550,
        'elementHandlers': specialElementHandlers
    },

    function(dispose){
        //doc.save('SVG.pdf');
    }
    , margins);

callback(doc);
}
});
}

Результатом является PDF-файл с изображением вверху и таблицей рядом. Проблема возникает, когда он переходит на вторую страницу, поскольку заголовки таблицы перекрываются с первой строкой, и это выглядит так.

http://i.imgur.com/vlfm4Fv.png

Можно ли убрать заголовки на второй странице?


person Hector Latorre    schedule 22.06.2016    source источник
comment
Не могли бы вы привести пример таблицы?   -  person Shane Abram Mendez    schedule 23.06.2016
comment
Таблица сгенерирована на PHP и выглядит как эта ссылка, нет проблем в начале таблица в PDF.   -  person Hector Latorre    schedule 23.06.2016
comment
Эта ссылка является первой страницей.   -  person Hector Latorre    schedule 23.06.2016
comment
Этот пост может помочь   -  person Shane Abram Mendez    schedule 23.06.2016
comment
Я пытался использовать autotable, проблема заключалась в том, что я преобразовывал и SVG, и таблицу из svg_to_pdf, и я не могу вызывать функции из autotable из svg_to_pdf.   -  person Hector Latorre    schedule 23.06.2016
comment
Моим лучшим вариантом было бы использовать это, чтобы преобразовать таблицу в png, а затем добавить ее в файл svg.pdf. Кроме того, не похоже, что есть много других вариантов.   -  person Shane Abram Mendez    schedule 23.06.2016
comment
Я проверю это, спасибо!   -  person Hector Latorre    schedule 23.06.2016


Ответы (3)


Итак, я нашел возможное решение для этого, если вы используете этот скрипт для jsPDF

https://raw.githubusercontent.com/MrRio/jsPDF/master/dist/jspdf.debug.js

вы можете загрузить его и изменить строку 5201, например, чтобы она имела отрицательное значение;

    this.margins.top = -50;

При этом на второй странице PDF нет заголовка.

Я пытался поиграть с кодом без особого успеха, если я найду лучший способ, я обновлю этот ответ (не знаю, разрешено ли мне это делать).

person Hector Latorre    schedule 23.06.2016

Когда вы рисуете таблицу, просто используйте:

startY: doc.internal.getNumberOfPages() > 1 ? doc.autoTableEndPosY() + 20 : 200,
person rrusev    schedule 31.05.2019

Попробуйте добавить классы css, такие как - thead { display: table-header-group } tfoot { display: table-row-group } tr { page-break внутри: избежать }

person Tejas    schedule 04.09.2019
comment
Объясните пожалуйста! - person Szabolcs Páll; 04.09.2019