使用Jquery数据表和pdf导出的自定义消息或段落

时间:2016-05-11 20:04:37

标签: pdf datatables

我正在使用jquery datatables中的pdf按钮,它实际上是pdfmake库。我遇到的问题是,当用户单击按钮导出表格时,我想在表格上方添加一个附加段落。我尝试过使用"消息"参数,但对于我的生活,我无法在pdf下载之前检索其他信息。我试过这样做。

buttons: [
                       {
                           extend: 'pdfHtml5',
                           orientation: 'landscape',
                           pageSize: 'LEGAL',
                           title: 'Entry',
                           header:true,
                           message:function() { $("#HeaderDesc").text()}

                       }
]

但我的尝试没有成功。有没有人对如何做到这一点有任何想法?

2 个答案:

答案 0 :(得分:2)

还有另一个简单的解决方案。 我通过使用splice属性完成了这个。您可以在自定义功能中执行此操作。

 doc.content.splice(0, 1, {
                            text: [
                                       { text: 'I am loving dataTable and PdfMake \n',bold:true,fontSize:15 },
                                       { text: 'You can control everything.',italics:true,fontSize:12 }

                            ],
                            margin: [0, 0, 0, 12],
                            alignment: 'center'
                        });

这将在第一个位置[0索引]拼接,并用上述内容替换1个值。

快乐编码!!!!

答案 1 :(得分:1)

你做不到。该按钮的config字面值为一次,而message不支持函数类型。

但是,您可以更改未记录良好的message回调中的customize()。这在dataTables将生成的文档传递给pdfmake之前调用。如果您已定义message,则message节点中将存在content个部分,并且这些节点具有保存实际消息的text属性:< / p>

customize: function ( doc ) {
   doc.content.forEach(function(content) {
     if (content.style == 'message') {
        content.text = 'this is a late created message'
     }
   })
}   

如上所述,必须定义message才能生效。如果您尚未定义message,则不会有可以操作的类型消息样式。您的pdfhtml5设置可能如下所示:

buttons: [
   {
    message: '__MESSAGE__',
    extend: 'pdfHtml5',
    orientation: 'landscape',
    pageSize: 'LEGAL',
    title: 'Entry',
    header:true,
    customize: function ( doc ) {
       doc.content.forEach(function(content) {
         if (content.style == 'message') {
            content.text = $("#HeaderDesc").text()
         }
       })
    }   
 }  
] 

演示 - &gt;的 https://jsfiddle.net/xx5f5z6x/