DataTables + PDFmake = цветные ячейки таблицы PDF? - PullRequest
0 голосов
/ 24 апреля 2018

Я пытаюсь распечатать файл PDF из таблицы массивов ниже, где каждая ячейка со словом «Инженер-программист» окрашена в синий цвет, а ячейки с «Лондон» - в красный. Хотелось бы сделать это с помощью цикла, просматривая все строки или столбцы один за другим (не определенную строку или столбец). Однако я просто не могу заставить его работать, и начинаю сдаваться. Я думаю, это как-то связано с методом each ()?

каждый ()

Таблица, которую я использую

var editor; // use a global for the submit and return data rendering in the examples

$(document).ready(function() {
    editor = new $.fn.dataTable.Editor( {
        ajax: "../php/staff.php",
        table: "#example",
        fields: [ {
                label: "First name:",
                name: "first_name"
            }, {
                label: "Last name:",
                name: "last_name"
            }, {
                label: "Position:",
                name: "position"
            }, {
                label: "Office:",
                name: "office"
            }, {
                label: "Extension:",
                name: "extn"
            }, {
                label: "Start date:",
                name: "start_date",
                type: "datetime"
            }, {
                label: "Salary:",
                name: "salary"
            }
        ]
    } );

    $('#example').DataTable( {
        dom: "Bfrtip",
        ajax: "../php/staff.php",
        columns: [
            { data: null, render: function ( data, type, row ) {
                // Combine the first and last names into a single table field
                return data.first_name+' '+data.last_name;
            } },
            { data: "position" },
            { data: "office" },
            { data: "extn" },
            { data: "start_date" },
            { data: "salary", render: $.fn.dataTable.render.number( ',', '.', 0, '$' ) }
        ],
        select: true,
        buttons: [
            { extend: "create", editor: editor },
            { extend: "edit",   editor: editor },
            { extend: "remove", editor: editor }
        ]
    } );
} );

1 Ответ

0 голосов
/ 25 апреля 2018

Взгляните на этот пример, он меняет ячейки в PDF, если возраст ниже 40. Нечто подобное также будет работать для вас.

Ключевая часть кода:

buttons: [
  {
    extend: "pdfHtml5",
    customize: function(doc) {
      age = table.column(3).data().toArray();
      for (var i = 0; i < age.length; i++) {
        if (age[i] < 40) {
          doc.content[1].table.body[i+1][3].fillColor = 'blue';
        }
      }
    }
  }
]
...