DataTable导出PDF时,如何在第6列后换行避免内容溢出?
解决DataTable导出PDF列内容溢出的换行方案
你可以通过pdfHtml5按钮的customize配置项修改pdfmake生成的文档结构,实现第6列后换行的效果。核心思路是遍历PDF表格的每一行,将原行拆分为两行:第一行显示前6列,第二行显示剩余列,以此避免横向内容溢出。
修改后的完整表格配置代码如下:
$('#savedTable').DataTable({ language: { url: '//cdn.datatables.net/plug-ins/1.13.5/i18n/tr.json', }, responsive: true, dom: 'Bfrtip', buttons: [ { extend: 'excelHtml5', text: '<i class="fa fa-file-excel-o mr-2"></i> EXCEL' }, { extend: 'pdfHtml5', orientation: 'landscape', pageSize: 'LEGAL', text: '<i class="fa fa-file-pdf-o mr-2"></i>PDF', customize: function(doc) { // 获取原表格的表头行数和内容体 const headerRows = doc.content[1].table.headerRows; const originalBody = doc.content[1].table.body; const newBody = []; // 拆分表头为两行:第一行显示前6列,第二行显示剩余列 for (let i = 0; i < headerRows; i++) { const originalHeader = originalBody[i]; newBody.push(originalHeader.slice(0, 6)); newBody.push(originalHeader.slice(6)); } // 拆分数据行为两行,对应表头的分段逻辑 for (let i = headerRows; i < originalBody.length; i++) { const originalRow = originalBody[i]; newBody.push(originalRow.slice(0, 6)); newBody.push(originalRow.slice(6)); } // 替换原表格的内容体 doc.content[1].table.body = newBody; } }, { extend: 'colvis', text: '<i class="fa fa-eye mr-2"></i> Sütunlar' } ], searching: true, select: true, });
关键说明
customize函数直接操作PDF生成的文档对象doc,修改内部表格结构- 表头和数据行采用一致的拆分逻辑,保证排版对齐
- 通过
slice方法拆分列集合,快速生成分段后的行数据
内容的提问来源于stack exchange,提问作者Reira
相关产品推荐
相关产品推荐

