我想从我的表中获取所有数据,问题是我只获取第一页中的数据(因为分页(。我的桌子上有 200 个寄存器,但分页只显示我 100 个寄存器,我怎样才能获得其他 100 个寄存器,它们在下一页使用 JSPDF 并使用 200 寄存器生成 PDF。我的代码如下:
async captureAutoTable() {
let imagen = await this.http.get('/assets/media/logos/logo_mw_h_dark_c10.png',{responseType: 'blob'}).toPromise();
const doc = new jsPDF();
let buffer = await new Response(imagen).arrayBuffer();
let base64 = btoa(String.fromCharCode.apply(null, new Uint8Array(buffer)));
doc.addImage(base64,'PNG', 10, 10);
doc.setFontSize(18);
doc.setFontStyle('bold');
doc.text('Reporte Estado de Proyecto', 70, 22);
doc.setFontSize(11);
doc.setTextColor(100);
let pageSize = doc.internal.pageSize;
let pageWidth = pageSize.width ? pageSize.width : pageSize.getWidth();
// Here I get the data from the table
doc.autoTable({
html: '#myTable',
startY: 30,
showHead: 'everyPage',
});
doc.save('table.pdf');
}
由于分页,您的 html 表 (#myTable( 没有所有数据,因此您导出 dom 中可用的数据。若要解决此问题,需要从终结点获取所有数据,然后创建适当的列和行。
async captureAutoTable() {
// fetch all data
const data = await this.http.get();
doc.autoTable({
// html: '#myTable', // #myTable contains paginated data
columns: // columns,
body: // rows
startY: 30,
showHead: 'everyPage',
});
doc.save('table.pdf');
}
示例:https://github.com/simonbengtsson/jsPDF-AutoTable/blob/master/examples/examples.js