Вот один из способов добавить настраиваемое форматирование в представление для печати DataTable.
Во-первых, это HTML datatable:
А вот как выглядит представление для печати:
Реализация:
<script type="text/javascript">
$(document).ready(function() {
$('#example').DataTable({
dom: 'Bfrtip',
buttons: [
{
extend: 'print',
autoPrint: false,
exportOptions: {
format: {
body: function ( inner, rowidx, colidx, node ) {
if (node.classList.contains('summary')) {
return '<span class="summary" style="color:red; font-style:italic;">' + inner + '</span>';
} else {
return inner;
}
}
}
},
customize: function ( win, butt, tbl ) {
$(win.document.body).find('span.summary').css('font-size', '20px');
$(win.document.body).find('span.summary').parent().css('background-color', 'yellow');
}
}
]
});
});
</script>
Пояснительные примечания:
В моих данных я вставил класс summary
в те ячейки, которыми хочу управлять - например:
<tr>
<td class="summary">Bradley Greer</td>
<td class="summary">Software Engineer</td>
<td class="summary">London</td>
<td class="summary"></td>
<td class="summary">2012/10/13</td>
<td class="summary">$132,000</td>
/tr>
Нет стиля, связанного с этим классом название.
Для моей демонстрации я просто жестко запрограммировал их. Но DataTables предоставляет различные способы динамически обрабатывать это как часть инициализации таблицы и обработки данных.
Затем я использую функцию format.body
(описанную на этой странице ). Я использую это, чтобы изменить содержимое данных (в частности, цвет шрифта) всех ячеек с использованием класса summary
.
Ключевым моментом здесь является создание диапазона, который добавляет обратно вырезанное имя класса. Как вы заметили, процессор печати удаляет все такие добавленные вручную классы и стили из представления печати.
Теперь я могу использовать функцию customize
(задокументирована на этой странице ) для использовать мое недавно добавленное имя класса. Для каждого соответствующего span
я нахожу родительский td
и корректирую его стиль.
Последнее замечание: чтобы распечатать затенение заднего плана, мне пришлось выбрать опцию «печать фона» в меню печати - это, вероятно, только мой принтер.
Надеюсь, что это поможет - или, по крайней мере, даст вам некоторые идеи для c конкретных потребностей.