Есть ли способ уменьшить заполнение ячеек в PDF, экспортированном DataTables? PDFMake Playground утверждает, что редактирование заполнения ячеек возможно при экспорте таблиц, но я не встречал ни одного примера кода, делающего это. Любая помощь приветствуется.
DataTables PDF Export Cell Padding
Ответы (2)
В pdfmake это можно сделать, задав макет таблицы для table: https://pdfmake.github.io/docs/document-definition-object/tables/#own-table-layouts
E.g.:
const tableNode = {
style: 'tableStyle',
table: {
widths: ["*", "*", "*"],
body: []
},
layout: {
paddingLeft: (i, node) => 10,
paddingRight: (i, node) => 10,
paddingTop: (i, node) => 10,
paddingBottom: (i, node) => 10
}
}
person
Jani Siivola
schedule
09.10.2019
У меня тоже была эта проблема, и это было самое простое решение, которое я мог придумать.
<script type="text/javascript">
$(document).ready(function () {
let $table = $('#whatever-your-table-is');
$table.DataTable({
buttons: [
'copy',
'excel',
'csv',
{
extend: 'pdf',
customize: function (doc) {
// Here's where you can control the cell padding
doc.styles.tableHeader.margin =
doc.styles.tableBodyOdd.margin =
doc.styles.tableBodyEven.margin = [10, 10, 10, 10];
},
pageSize : 'LETTER'
}
]
});
});
</script>
Если вы найдете неминифицированную версию, вот дамп настроек стилей DataTables, поэтому я решил, что могу испортить tableBodyOdd
и tableBodyEven
, и это сработало.
var doc = {
pageSize: config.pageSize,
pageOrientation: config.orientation,
content: [
{
table: {
headerRows: 1,
body: rows
},
layout: 'noBorders'
}
],
styles: {
tableHeader: {
bold: true,
fontSize: 11,
color: 'white',
fillColor: '#2d4154',
alignment: 'center'
},
tableBodyEven: {},
tableBodyOdd: {
fillColor: '#f3f3f3'
},
tableFooter: {
bold: true,
fontSize: 11,
color: 'white',
fillColor: '#2d4154'
},
title: {
alignment: 'center',
fontSize: 15
},
message: {}
},
defaultStyle: {
fontSize: 10
}
};
person
Nicholas Piasecki
schedule
26.04.2021