我使用的是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/