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



我使用的是jquery数据表中的pdf按钮,它本质上是pdfmake库。我遇到的问题是,当用户单击按钮导出表时,我想在表的正上方添加一个额外的段落。我尝试过使用"message"参数,但就我而言,我无法在下载pdf之前检索到其他信息。我试过这样做。

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

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

还有另一个简单的解决方案。我通过使用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值。

编码快乐!!!!

您不能。按钮的config文字读取一次,并且message不支持函数类型。

但是,您可以在文档不太完善的customize()回调中更改message。这是在dataTables将生成的文档传递给pdfmake之前调用的。如果您定义了message,那么在content节点中将存在message部分,并且这些节点具有包含实际消息的text属性:

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()
         }
       })
    }   
 }  
] 

演示->https://jsfiddle.net/xx5f5z6x/

最新更新