Angular Datatable добавляет заголовок при экспорте

#jquery #datatables

#jquery #таблицы данных

Вопрос:

Я пытаюсь добавить пользовательский заголовок в Angular datatable при экспорте в pdf, но параметр функции customize не включает document.body. Ниже приведен мой код:

 this.dtOptions = {
        data: data,
        dom: 'Bfrtip',
        buttons: [
          {
            extend: 'pdfHtml5',
            customize: function ( win ) {
              $(win.document.body).append( $('#header'));
            }
        }],
        columns: [
          {
            title: 'ID',
            data: 'id'
          },
          {
            title: 'Name',
            data: 'name'
          }
        ]
      };

      var table = $('.datatable').DataTable(this.dtOptions);
  

Пожалуйста, помогите

Ответ №1:

Во-первых, ссылки на документацию:

  1. Документация по таблицам данных PdfHtml5. Поиск Option и внутри этого, customize . Для атрибутов и параметров таблиц данных при экспорте в формате PDF.
  2. Документация PDFMake. Для стилей и параметров, таких как fontSize , alignment … и т.д.

Во-вторых, пример кода:

 dom: 'Bfrtip',
    buttons: [{
        extend: 'pdfHtml5',
        text: 'PDF with header',
        customize: function(doc) {
            doc.content.splice(1, 0, {
                margin: [0, 0, 0, 12],
                alignment: 'center',
                text: 'My Header',
                fontSize: 15
            });
        }
    }]
  

В-третьих, результат:

введите описание изображения здесь

В-четвертых, весь код для этого примера:

 <html>
<head>

    <script src="https://code.jquery.com/jquery-3.5.1.js"></script>
    <script src="https://cdn.datatables.net/1.10.22/js/jquery.dataTables.min.js"></script>
    <script src="https://cdn.datatables.net/buttons/1.6.4/js/dataTables.buttons.min.js"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/jszip/3.1.3/jszip.min.js"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/pdfmake/0.1.53/pdfmake.min.js"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/pdfmake/0.1.53/vfs_fonts.js"></script>
    <script src="https://cdn.datatables.net/buttons/1.6.4/js/buttons.html5.min.js"></script>
    
    <link rel="stylesheet" href="https://cdn.datatables.net/1.10.22/css/jquery.dataTables.min.css">
    <link rel="stylesheet" href="https://cdn.datatables.net/buttons/1.6.4/css/buttons.dataTables.min.css">

</head>




<body>
    <table id="stationTypesList">
        <thead>
            <th>Test 1</th>
            <th>Test 2</th>
            <th>Test 3</th>
            <th>Test 4</th>
            <th>Test 5</th>
            <th>Test 6</th>
            <th>Test 7</th>
            <th>Test 8</th>
        </thead>
        <tbody>
            <tr>
                <td>a</td>
                <td>b</td>
                <td>c</td>
                <td>d</td>
                <td>e</td>
                <td>f</td>
                <td>g</td>
                <td>h</td>
            </tr>
            <tr>
                <td>a2</td>
                <td>b2</td>
                <td>c2</td>
                <td>d2</td>
                <td>e2</td>
                <td>f2</td>
                <td>g2</td>
                <td>h2</td>
            </tr>
            <tr>
                <td>a3</td>
                <td>b3</td>
                <td>c3</td>
                <td>d3</td>
                <td>e3</td>
                <td>f3</td>
                <td>g3</td>
                <td>h3</td>
            </tr>
            <tr>
                <td>a4</td>
                <td>b4</td>
                <td>c4</td>
                <td>d4</td>
                <td>e4</td>
                <td>f4</td>
                <td>g4</td>
                <td>h4</td>
            </tr>
            <tr>
                <td>a5</td>
                <td>b5</td>
                <td>c5</td>
                <td>d5</td>
                <td>e5</td>
                <td>f5</td>
                <td>g5</td>
                <td>h5</td>
            </tr>
            <tr>
                <td>a6</td>
                <td>b6</td>
                <td>c6</td>
                <td>d6</td>
                <td>e6</td>
                <td>f6</td>
                <td>g6</td>
                <td>h6</td>
            </tr><tr>
                <td>a</td>
                <td>b</td>
                <td>c</td>
                <td>d</td>
                <td>e</td>
                <td>f</td>
                <td>g</td>
                <td>h</td>
            </tr>
            <tr>
                <td>a2</td>
                <td>b2</td>
                <td>c2</td>
                <td>d2</td>
                <td>e2</td>
                <td>f2</td>
                <td>g2</td>
                <td>h2</td>
            </tr>
            <tr>
                <td>a3</td>
                <td>b3</td>
                <td>c3</td>
                <td>d3</td>
                <td>e3</td>
                <td>f3</td>
                <td>g3</td>
                <td>h3</td>
            </tr>
            <tr>
                <td>a4</td>
                <td>b4</td>
                <td>c4</td>
                <td>d4</td>
                <td>e4</td>
                <td>f4</td>
                <td>g4</td>
                <td>h4</td>
            </tr>
            <tr>
                <td>a5</td>
                <td>b5</td>
                <td>c5</td>
                <td>d5</td>
                <td>e5</td>
                <td>f5</td>
                <td>g5</td>
                <td>h5</td>
            </tr>
            <tr>
                <td>a6</td>
                <td>b6</td>
                <td>c6</td>
                <td>d6</td>
                <td>e6</td>
                <td>f6</td>
                <td>g6</td>
                <td>h6</td>
            </tr><tr>
                <td>a</td>
                <td>b</td>
                <td>c</td>
                <td>d</td>
                <td>e</td>
                <td>f</td>
                <td>g</td>
                <td>h</td>
            </tr>
            <tr>
                <td>a2</td>
                <td>b2</td>
                <td>c2</td>
                <td>d2</td>
                <td>e2</td>
                <td>f2</td>
                <td>g2</td>
                <td>h2</td>
            </tr>
            <tr>
                <td>a3</td>
                <td>b3</td>
                <td>c3</td>
                <td>d3</td>
                <td>e3</td>
                <td>f3</td>
                <td>g3</td>
                <td>h3</td>
            </tr>
            <tr>
                <td>a4</td>
                <td>b4</td>
                <td>c4</td>
                <td>d4</td>
                <td>e4</td>
                <td>f4</td>
                <td>g4</td>
                <td>h4</td>
            </tr>
            <tr>
                <td>a5</td>
                <td>b5</td>
                <td>c5</td>
                <td>d5</td>
                <td>e5</td>
                <td>f5</td>
                <td>g5</td>
                <td>h5</td>
            </tr>
            <tr>
                <td>a6</td>
                <td>b6</td>
                <td>c6</td>
                <td>d6</td>
                <td>e6</td>
                <td>f6</td>
                <td>g6</td>
                <td>h6</td>
            </tr><tr>
                <td>a</td>
                <td>b</td>
                <td>c</td>
                <td>d</td>
                <td>e</td>
                <td>f</td>
                <td>g</td>
                <td>h</td>
            </tr>
            <tr>
                <td>a2</td>
                <td>b2</td>
                <td>c2</td>
                <td>d2</td>
                <td>e2</td>
                <td>f2</td>
                <td>g2</td>
                <td>h2</td>
            </tr>
            <tr>
                <td>a3</td>
                <td>b3</td>
                <td>c3</td>
                <td>d3</td>
                <td>e3</td>
                <td>f3</td>
                <td>g3</td>
                <td>h3</td>
            </tr>
            <tr>
                <td>a4</td>
                <td>b4</td>
                <td>c4</td>
                <td>d4</td>
                <td>e4</td>
                <td>f4</td>
                <td>g4</td>
                <td>h4</td>
            </tr>
            <tr>
                <td>a5</td>
                <td>b5</td>
                <td>c5</td>
                <td>d5</td>
                <td>e5</td>
                <td>f5</td>
                <td>g5</td>
                <td>h5</td>
            </tr>
            <tr>
                <td>a6</td>
                <td>b6</td>
                <td>c6</td>
                <td>d6</td>
                <td>e6</td>
                <td>f6</td>
                <td>g6</td>
                <td>h6</td>
            </tr><tr>
                <td>a</td>
                <td>b</td>
                <td>c</td>
                <td>d</td>
                <td>e</td>
                <td>f</td>
                <td>g</td>
                <td>h</td>
            </tr>
            <tr>
                <td>a2</td>
                <td>b2</td>
                <td>c2</td>
                <td>d2</td>
                <td>e2</td>
                <td>f2</td>
                <td>g2</td>
                <td>h2</td>
            </tr>
            <tr>
                <td>a3</td>
                <td>b3</td>
                <td>c3</td>
                <td>d3</td>
                <td>e3</td>
                <td>f3</td>
                <td>g3</td>
                <td>h3</td>
            </tr>
            <tr>
                <td>a4</td>
                <td>b4</td>
                <td>c4</td>
                <td>d4</td>
                <td>e4</td>
                <td>f4</td>
                <td>g4</td>
                <td>h4</td>
            </tr>
            <tr>
                <td>a5</td>
                <td>b5</td>
                <td>c5</td>
                <td>d5</td>
                <td>e5</td>
                <td>f5</td>
                <td>g5</td>
                <td>h5</td>
            </tr>
            <tr>
                <td>a6</td>
                <td>b6</td>
                <td>c6</td>
                <td>d6</td>
                <td>e6</td>
                <td>f6</td>
                <td>g6</td>
                <td>h6</td>
            </tr><tr>
                <td>a</td>
                <td>b</td>
                <td>c</td>
                <td>d</td>
                <td>e</td>
                <td>f</td>
                <td>g</td>
                <td>h</td>
            </tr>
            <tr>
                <td>a2</td>
                <td>b2</td>
                <td>c2</td>
                <td>d2</td>
                <td>e2</td>
                <td>f2</td>
                <td>g2</td>
                <td>h2</td>
            </tr>
            <tr>
                <td>a3</td>
                <td>b3</td>
                <td>c3</td>
                <td>d3</td>
                <td>e3</td>
                <td>f3</td>
                <td>g3</td>
                <td>h3</td>
            </tr>
            <tr>
                <td>a4</td>
                <td>b4</td>
                <td>c4</td>
                <td>d4</td>
                <td>e4</td>
                <td>f4</td>
                <td>g4</td>
                <td>h4</td>
            </tr>
            <tr>
                <td>a5</td>
                <td>b5</td>
                <td>c5</td>
                <td>d5</td>
                <td>e5</td>
                <td>f5</td>
                <td>g5</td>
                <td>h5</td>
            </tr>
            <tr>
                <td>a6</td>
                <td>b6</td>
                <td>c6</td>
                <td>d6</td>
                <td>e6</td>
                <td>f6</td>
                <td>g6</td>
                <td>h6</td>
            </tr>
        </tbody>
    </table>
</body>
</html>
<script>
$('#stationTypesList').DataTable({
    dom: 'Bfrtip',
        buttons: [ {
            extend: 'pdfHtml5',
            text: 'PDF with header',
            customize: function ( doc ) {
                doc.content.splice( 1, 0, {
                    margin: [ 0, 0, 0, 12 ],
                    alignment: 'center',
                    text: 'My Header',
                    fontSize: 15
                } );
            }
        } ]
});
</script>