1

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

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

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

exporterPdfTableLayout: 'lightHorizontalLines' 

其中“lightHorizo​​ntalLines”是我想使用的 pdfMake 提供的标准布局。

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

有人可以帮忙解决我哪里出错了吗?

4

3 回答 3

1

看来

exporterPdfTableLayout:

在 ui-grid 中不起作用。我通过直接在 pdfMaker.js 文件中编辑“defaultLayout”来解决此问题

于 2016-04-20T13:50:52.567 回答
1

@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
      };
于 2016-07-05T16:21:40.187 回答
1

您可以使用 设置布局,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 建议)。

于 2017-03-15T07:04:29.597 回答