Estoy tratando de personalizar PDF-Export con DataTables (que usa pdfmake ). Todos mis estilos personalizados funcionan excepto dontBreakRows
, no parece hacer ninguna diferencia, por lo que el contenido de las filas de la tabla se divide en saltos de página, en lugar de mantenerlos juntos en la página siguiente cuando no encajan en la anterior, lo que es lo que esperaba.
Mi versión de pdfmake es 0.1.27 (la última, en la fecha), DataTables 1.10.12, Buttons 1.2.1
Este es mi código:
(...) $.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 } } }), (...)
¿Qué estoy haciendo mal? ¡Gracias!
Tuve exactamente el mismo problema. Los estilos no funcionan.
Para mí esto funcionó (dependiendo de la posición de la tabla en el contenido):
doc.content[1].table.dontBreakRows = true;
Si descubriste una mejor manera, solo házmelo saber.
Está usando bodyOdd
y bodyEven
, por lo que necesita usar
doc.styles.tableBodyOdd.noWrap = true; doc.styles.tableBodyEven.noWrap = true;