是否可以选择右对齐 DataTables pdf 导出的 messageBottom 属性中的文本?

Is there an option to right align text in messageBottom attribute of DataTables pdf export?

我已经使用 Datatables 创建了一个 pdf 导出,我正在使用 messageBottom 在导出的 table 下显示一条消息。问题是它自动左对齐,我希望值右对齐,在导出的最后一列下方 table。有没有办法做到这一点?我查看了 Datatable pdfHtml5 文档,但我似乎无法弄清楚如何调整 messageBottommessageTop.

中文本的对齐方式

这是我初始化 table 的代码:

var table = $('#exampleTable').DataTable( {
        dom: 'Bfrtip',
        buttons: [
         {
            extend: 'pdfHtml5',
            messageBottom: function() {
               return 'message to be displayed at bottom'
            },
            customize: function ( doc ) {
            /* here I am aligning text in a column to the right */
            var rowCount = table.rows().count() + 1;
            for (i = 0; i < rowCount; i++) {
               doc.content[2].table.body[i][3].alignment = 'right';
            };
         }
      }
   ]
} );

在我使用的datatable版本中,我是这样解决的。 'messageBottom' 使用样式 'message',因此在自定义中添加以下行已解决我的问题。

doc.styles.message.alignment = "right";

此解决方案的问题是 'messageTop' 也使用 'message' 样式,因此它也会向右对齐,但在我的例子中我只使用 'messageBottom'。不知道有没有更好的办法

我的例子:

{
    extend: 'pdf',
    messageBottom: function() { 
        return "\n\nTOTAL VENCIMIENTO: "+$('#header-vcto-total span').text()+"\n"
    },
    customize: function(doc) {
        /** this line changes the alignment of 'messageBottom' and 'messageTop' **/
        doc.styles.message.alignment = "right";

        doc.content[1].table.widths = [ '40%',  '25%', '17.5%', '17.5%'];
        var rowCount = doc.content[1].table.body.length;
        for (i = 1; i < rowCount; i++) {
            doc.content[1].table.body[i][1].alignment = 'center';
            doc.content[1].table.body[i][2].alignment = 'center';
            doc.content[1].table.body[i][3].alignment = 'right';
            doc.content[1].table.body[i][3].text += ' €';
        };
    }    
}

希望您觉得它有用。 一声问候。

@zhexirox 的回答确实右对齐消息底部,唯一的问题是它也将消息顶部对齐。如果您只想对齐/格式化 table 下方的内容,您可以使用 doc.content.push 这是一个例子:

customize: function(doc) {
   doc.content.push( {
      margin: [15, 20, 0, 0 ],
      alignment: 'left',
      text: 'example message'
   });
}