我正在使用jquery datatables中的pdf按钮,它实际上是pdfmake库。我遇到的问题是,当用户单击按钮导出表格时,我想在表格上方添加一个附加段落。我尝试过使用"消息"参数,但对于我的生活,我无法在pdf下载之前检索其他信息。我试过这样做。
buttons: [
{
extend: 'pdfHtml5',
orientation: 'landscape',
pageSize: 'LEGAL',
title: 'Entry',
header:true,
message:function() { $("#HeaderDesc").text()}
}
]
但我的尝试没有成功。有没有人对如何做到这一点有任何想法?
答案 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/ 强>