Я пытаюсь создать PDF с таблицей в нем.
Мое требование заключается в применении colspan на выборочных данных,
я использовал
https://simonbengtsson.github.io/jsPDF-AutoTable/#spans
&
https://github.com/simonbengtsson/jsPDF-AutoTable/blob/master/examples/examples.js#L258
для справки.
В приведенных выше примерах colspan реализован только на первой странице, я хочу продолжить то же самое и на других страницах. И особенно в случае разрыва страницы, я хочу, чтобы colspan располагался прямо под заголовком
но colspan отображается в начале второй страницы
Вот мой рабочий демонстрационный код, который я сделал до сих пор
Ниже приведен пример кода
function createTableinPDF(tableData) {
var doc = new jsPDF("l", "pt");
doc.setFontSize(12);
doc.setTextColor(0);
doc.setFontStyle("bold");
doc.text("Account : ABC", 40, 20);
doc.text(" ID : 1", 40, 40);
doc.autoTable(tableData.columns, tableData.rows, {
theme: "grid",
startY: 50,
styles: { overflow: "linebreak", columnWidth: "wrap" },
drawRow: function(row, data) {
// Colspan
doc.setFontStyle("bold");
doc.setFontSize(10);
//adding page
var previousEndpointName =
row.index === 0
? ""
: data.table.rows[data.row.index - 1].raw.endPointName;
var currentendPOintName =
data.table.rows[data.row.index].raw.endPointName;
console.log(currentendPOintName);
var nextendPointName =
data.table.rows.length - 1 === row.index
? ""
: data.table.rows[data.row.index + 1].raw.endPointName;
var countofItems = data.table.rows.filter(
x => x.raw.endPointName === currentendPOintName
).length;
var allCellsHeight = data.table.rows
.filter(function(x) {
return x.raw.endPointName === currentendPOintName;
})
.map(rowdata => rowdata.height)
.reduce((a, x) => a + x);
var posY = row.y + allCellsHeight + data.settings.margin.bottom;
var pageHeight =
doc.internal.pageSize.height || doc.internal.pageSize.getHeight();
if (
row.index === 0 ||
row.index === 8 ||
row.index === 17 ||
row.index === 23
) {
var posY = row.y + allCellsHeight + data.settings.margin.bottom;
var pageHeight =
doc.internal.pageSize.height || doc.internal.pageSize.getHeight();
if (posY > pageHeight) {
data.addPage();
row.y = 0;
}
doc.setTextColor(200, 0, 0);
doc.rect(
data.settings.margin.left,
row.y,
data.table.width + 27.5,
15,
"S"
);
doc.autoTableText(
currentendPOintName,
data.settings.margin.left + data.table.width / 2,
row.y + 15 / 2,
{
halign: "center",
valign: "middle"
}
);
data.cursor.y += 15;
}
},
columnStyles: {
criteriaName: { columnWidth: 80 },
criteriaInc: { columnWidth: 355 },
criteriaExc: { columnWidth: 355 }
}
});
doc.save("table-colspan.pdf");
}
Буду признателен, если кто-нибудь сможет мне помочь.