ui-grid pdfСделать макет экспорта

Я использую pdfMake для экспорта из ui-grid и пытаюсь установить макет таблицы с помощью exporterPdfTableLayout, как описано в документации ui-grid.

TableLayout в формате pdfMake управляет линиями сетки и т.п. Обычно мы используем макет по умолчанию. По умолчанию значение null, что означает отсутствие макета.

Я пытаюсь установить макет, используя следующую строку:

exporterPdfTableLayout: 'lightHorizontalLines' 

Где «lightHorizontalLines» — это стандартный макет, предоставляемый pdfMake, который я хочу использовать.

Я не могу найти примеры использования этого или любую другую документацию по ui-grid для этой цели.

Может ли кто-нибудь помочь с тем, где я ошибаюсь?


person Janbango    schedule 20.04.2016    source источник


Ответы (3)


Похоже,

exporterPdfTableLayout:

не работает в ui-grid. Я исправил это, отредактировав defaultLayout непосредственно в файле pdfMaker.js.

person Janbango    schedule 20.04.2016
comment
Без просмотра истории кажется, что либо кто-то случайно удалил эту строку, либо она была удалена, потому что вызывала ошибку, но тогда кажется, что комментарии к ней также были бы удалены. - person Gary; 05.07.2016

@Janbango также не забудьте обновить ui-grid.js, чтобы включить layout: grid.options.exporterPdfTableLayout в docDefinition.

      var docDefinition = {
          pageOrientation: grid.options.exporterPdfOrientation,
          pageSize: grid.options.exporterPdfPageSize,
          content: [{
              style: 'tableStyle',
              table: {
                  headerRows: 1,
                  widths: headerWidths,
                  body: allData
              },
              layout: grid.options.exporterPdfTableLayout,
          }],
          styles: {
              tableStyle: grid.options.exporterPdfTableStyle,
              tableHeader: grid.options.exporterPdfTableHeaderStyle
          },
          defaultStyle: grid.options.exporterPdfDefaultStyle
      };
person Gary    schedule 05.07.2016

Вы можете установить макет, используя exporterPdfCustomFormatter, и вы должны сослаться на первый объект в массиве содержимого следующим образом:

docDefinition.content[0].layout = {
    hLineWidth: function(i, node) {
       return (i === 0 || i === node.table.body.length) ? 2 : 1;},
    vLineWidth: function(i, node) {
       return (i === 0 || i === node.table.widths.length) ? 2 : 1;},
    hLineColor: function(i, node) {
       return (i === 0 || i === node.table.body.length) ? 'black' : 'gray';},
    vLineColor: function(i, node) {
        return (i === 0 || i === node.table.widths.length) ? 'black' : 'gray';}
}

or:

docDefinition.content[0].layout = 'lightHorizontalLines'

Полная настройка свойства выглядит так:

 exporterPdfCustomFormatter: function (docDefinition) {
      docDefinition.content[0].layout = 'lightHorizontalLines'
      return docDefinition;
 }

Вы можете установить любые свойства макета, используя этот шаблон. Убедитесь, что вы ссылаетесь на подсвойство (например, «макет»). Если вы попытаетесь установить свойства на уровне содержимого, вы перезапишете объект содержимого (данные вашей таблицы), в котором хранятся объекты тела, передаваемые с помощью ui-grid (или вы можете установить все свойства содержимого, как предлагает @Gary выше ).

person Paul Pardi    schedule 15.03.2017