UI-grid pdf制作导出布局



我正在使用pdfMake从ui-grid导出,我正在尝试使用exporterPdfTableLayout设置表格的布局,如ui-grid文档中所述

pdfMake 格式的 tableLayout ,控制网格线等。我们通常使用默认布局。 默认为 null,表示没有布局

我正在尝试使用以下行设置布局:

exporterPdfTableLayout: 'lightHorizontalLines' 

其中"lightHorizontalLines"是pdfMake提供的标准布局,我想使用它。

我找不到任何用于此目的的示例或ui-grid上的任何其他文档。

有人可以帮助我出错的地方吗?

看起来

exporterPdfTableLayout:

在 UI 网格中不起作用。我通过直接在pdfMaker文件中编辑"默认布局"来解决此问题.js

@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
      };
您可以使用

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';}
}

或:

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

完整的属性设置如下所示:

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

您可以使用该模式设置任何布局属性。请务必引用子属性(例如"布局")。如果尝试在内容级别设置属性,则会覆盖存储由 ui-grid 传入的正文对象的内容对象(表数据)(或者可以设置所有内容属性,如上面@Gary建议)。

最新更新