ui-grid pdf制作导出布局

ui-grid pdfMake export layout

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

A tableLayout in pdfMake format, controls gridlines and the like. We use the default layout usually. Defaults to null, which means no layout

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

exporterPdfTableLayout: 'lightHorizontalLines' 

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

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

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

看来

exporterPdfTableLayout:

在 ui 网格中不起作用。我通过直接在 pdfMaker.js 文件

中编辑 'defaultLayout' 来解决这个问题

@Janbango 也不要忘记更新 ui-grid.js 以包含布局:grid.options.exporterPdfTableLayout,进入文档定义。

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

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