我必须从数据库中的数据生成pdf。 在屏幕截图中是一个示例,每个条目(以consentId开头)是对象中的数组,如:
const data = [
{key: 'Consent ID:', entry: 5711},
{key: 'Version:', entry: '1.0.1'},
{key: 'Status:', entry: 'gegeben'},
{key: 'Legal Text:', entry: 'Ich bin einverstanden. dass O2 mich
über O2-Produkte informiert und zwar per E-Mail, sonstiger elektronischer
Nachrichten und Telefon.'},
{key: 'Eigenschaften:', entry: ''},
{key: 'Email:', entry: ''},
{key: 'Sonstige elektronische Nachrichten:', entry: ''},
{key: 'Verkersdaten:', entry: ''},
],
[
{key: 'Consent ID:', entry: 5716},
{key: 'Version:', entry: '1.0.1'},
{key: 'Status:', entry: 'gegeben'},
{key: 'Legal Text:', entry: 'Ich bin einverstanden. dass O2 mich
über O2-Produkte informiert und zwar per E-Mail, sonstiger
elektronischer Nachrichten und Telefon.'},
{key: 'Eigenschaften:', entry: ''},
{key: 'Bestandsdaten:', entry: 'gegeben'},
{key: 'verkehrsdaten:', entry: 'gegeben'},
]
是否可以为每个部分生成pdfmake中的表格,还是需要其他解决方案?例如,我们有两个部分:
1。现状Einwilligungen
2。地位erlaubnisse
答案 0 :(得分:0)
更新:相信你的问题直接在这里解决 - https://github.com/bpampuch/pdfmake/issues/224
最近的一个项目有类似的问题。 在jedi的第一个答案pdfmake: How to create multiple page pdf with different orientation?中的评论证明是有帮助的, 和PDFMAKE: How to Repeat Array[ ] Items in 'content'的答案一样。
以下jQuery的内容可能会有所帮助。将数据片段放入对象(使用列而不是表格和换行符而不是边框)但概念应该有所帮助。添加了一点造型。基本上循环并将其推入内容。
var Einwilligungen = [];
Einwilligungen.push({
consentID:5711,
version:'1.0.1'
});
Einwilligungen.push({
consentID:5716,
version:'1.0.1'
});
var Erlaubnisse = [];
Erlaubnisse.push({
consentID:5711,
version:'1.0.1'
});
Erlaubnisse.push({
consentID:5716,
version:'1.0.1'
});
var dd = {
content: [],
styles: {
f18: {
fontSize: 18
},
strong: {
bold: true
}
},
};
dd.content.push({text: 'Status der Einwilligungen', style: ['f18','strong'] });
for(var i=0;i<Einwilligungen.length;i++) {
dd.content.push({ columns:[{text: 'Consent ID', bold:true},{text: Einwilligungen[i].consentID}]});
dd.content.push({ columns:[{text: 'Version', bold:true},{text: Einwilligungen[i].version}]});
dd.content.push(' ');
}
dd.content.push(' ');
dd.content.push({text: 'Status der Erlaubnisse', style: ['f18','strong'] });
for(var i=0;i<Erlaubnisse.length;i++) {
dd.content.push({ columns:[{text: 'Consent ID', bold:true},{text: Erlaubnisse[i].consentID}]});
dd.content.push({ columns:[{text: 'Version', bold:true},{text: Erlaubnisse[i].version}]});
dd.content.push(' ');
}
pdfMake.createPdf(dd).open();
答案 1 :(得分:0)
对于动态数组宽度:
let widthArray=[]
let widthPerc =(100/this.userColumDfs.length)
for(let i=0; i<this.userColumDfs.length; i++){
widthArray.push(widthPerc+"%")
}
console.log("widthArray",widthArray);
var documentDefinition = {
pageOrientation: 'landscape',
content: [
{ text: this.fileName, style: 'header' },
{ table: { headerRows:1, widths:widthArray, body: tableData } },
],
styles: {
header: { fontSize: 18, bold: true, margin: [0, 10, 0, 10], alignment: 'center' },
tableHeader: { fillColor: '#0d989c', color: 'white' }
}
};
return documentDefinition;