2017-04-05 1 views
2

Ich versuche, den PDF-Export mit DataTables anzupassen (die pdfmake verwendet). Alle meine benutzerdefinierten Stile funktionieren außer dontBreakRows, es scheint keinen Unterschied zu machen, daher werden Tabellenzeileninhalte in Seitenumbrüche aufgeteilt, anstatt sie auf der nächsten Seite zusammenzuhalten, wenn sie nicht in die vorherige Seite passen habe ich erwartet.DataTables PDF-Export (pdfmake): Wie verhindert man Zeilenbrüche in Seitenumbrüchen?

Meine pdfmake Version ist 0.1.27 (letzte, am Tag), Tables 1.10.12, Buttons 1.2.1

Dies ist mein Code:

(...) 
$.extend(true, {}, buttonCommon, { 
    'extend': 'pdf', 
    'text': 'PDF A4', 
    'orientation': 'landscape', 
    'pageSize': 'A4', 
    'message': 'Date '+todays, 
    'customize': function (doc) { 
     doc.content.splice(1, 0, { 
     margin: \{0, -32, 0, 8\}, 
     alignment: 'right', 
     image: 'data:image/png;base64,(...)' 
     }); 
     //These styles are working: 
     doc.defaultStyle.fontSize = 10; 
     doc.styles.title.fontSize = 12; 
     doc.styles.tableHeader.fontSize = 11; 
     doc.styles.tableFooter.fontSize = 11; 
     doc.styles.tableHeader.alignment = 'left'; 
     doc.styles.title.bold = true; 
     doc.styles.tableHeader.bold = true; 
     doc.styles.tableHeader.color = '#ffffff'; 
     doc.styles.tableHeader.fillColor = '#666666'; 
     doc.styles.tableBodyOdd.fillColor = '#ffffff'; 
     doc.styles.tableBodyEven.fillColor = '#e9e9e9'; 
     doc.styles.tableHeader.noWrap = true; 

     //It doesn't work: 
     doc.styles.tableBodyOdd.dontBreakRows = true; 
     doc.styles.tableBodyEven.dontBreakRows = true; 
     doc.styles.tableBodyOdd.pageBreak = 'before'; 
     doc.styles.tableBodyEven.pageBreak = 'before'; 

     //It doesn't work neither: 
     doc.defaultStyle = 
     { 
      dontBreakRows: true 
     }    
    } 

}), 
(...) 

Was mache ich falsch? Vielen Dank!

Antwort

2

Ich hatte genau das gleiche Problem. Die Stile funktionieren nicht.

Für mich diesen arbeitete (abhängig von der Lage der Tabelle in Inhalt):

doc.content[1].table.dontBreakRows = true; 

Wenn Sie eine bessere Art und Weise herausgefunden, mich wissen lassen

Verwandte Themen