jspdf-autotable并不会自动调整单元格高度以适应多行文本。如果希望单元格的高度能够根据内容自动调整
import jsPDF from 'jspdf';
import 'jspdf-autotable';
const doc = new jsPDF();
const data = [
['Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.'],
['Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.']
];
const columns = [
{ header: 'Text' }
];
doc.autoTable({
head: [columns],
body: data,
didDrawCell: (data) => {
if (data.column.index === 0 && data.cell.section === 'body') {
const text = data.cell.raw;
const cellWidth = data.cell.width;
const cellHeight = data.cell.height / doc.internal.scaleFactor();
doc.text(text, data.cell.x + 2, data.cell.y + cellHeight / 2, { baseline: 'middle' });
doc.setFillColor(255, 255, 255);
doc.rect(data.cell.x, data.cell.y, cellWidth, cellHeight, 'F');
}
},
bodyStyles: { valign: 'middle' },
cellStyles: { overflow: 'linebreak', fontSize: 10, fontStyle: 'normal', textColor: [0, 0, 0] }
});
doc.save('table.pdf');
使用了cellStyles选项来设置单元格样式。其中,overflow: 'linebreak’表示当文字超出一行时自动换行。