Angular 6 - jsPDF -autotable - PDF 未正确生成
Angular 6 - jsPDF -autotable - PDF not generating properly
我不知道哪里做错了(在循环中)。目前,pdf 仅使用第一个 object 的第一个 属性 生成。 Header 也没有显示。试图在 jsbpdf autoTable 中加载 json 响应。暂时,请考虑以下模拟数据。
到目前为止,
test.ts
prepareDoc(){
const header = [['Devloper ID', 'Develoepr Name', 'Department', 'Location', 'Rate(Hr)', 'Current Status', 'Contact']];
const data = [{
'id': 'xxx-001',
'dev_name': 'qqqqq',
'department': 'ABC',
'loc': 'loc-001',
'hourly_rate': '00',
'current_Status': 'Open',
'contact': '--'
}, {
'id': 'xxx-002',
'dev_name': 'eeeee',
'department': 'DEF',
'loc': 'loc-002',
'hourly_rate': '00',
'current_Status': 'Engaged',
'contact': '--'
}, {
'id': 'xxx-003',
'dev_name': 'rrrrr',
'department': 'IJK',
'loc': 'loc-003',
'hourly_rate': '00',
'current_Status': 'Qued(5)',
'contact': '--'
}, {
'id': 'xxx-004',
'dev_name': 'bbbbb',
'department': 'LMN',
'loc': 'loc-004',
'hourly_rate': '00',
'current_Status': 'Vacction',
'contact': '--'
}];
data.forEach(elm => {
const temp = [elm.id, elm.dev_name, elm.department, elm.loc, elm.hourly_rate, elm.current_Status, elm.contact];
rows.push(temp);
console.log('Rows', rows); // showing all data
});
downloadPDF.autoTable(header, rows);
downloadPDF.save('demo.pdf');
}
html
<button (click)='prepareDoc()'></button>
问题
PFA:在没有 header 和其他数据的情况下生成 pdf
请帮我解决这个问题
你应该像这样使用 autoTable 方法:
downloadPDF.autoTable({
head: header,
body: rows,
});
它对我很有用。我用这个代码 https://codepen.io/anon/pen/WqvqVX:
检查了它
const downloadPDF = new jsPDF();
function prepareDoc() {
const header = [['Devloper ID', 'Develoepr Name', 'Department', 'Location', 'Rate(Hr)', 'Current Status', 'Contact']];
const rows=[];
const data = [{
'id': 'xxx-001',
'dev_name': 'qqqqq',
'department': 'ABC',
'loc': 'loc-001',
'hourly_rate': '00',
'current_Status': 'Open',
'contact': '--'
}, {
'id': 'xxx-002',
'dev_name': 'eeeee',
'department': 'DEF',
'loc': 'loc-002',
'hourly_rate': '00',
'current_Status': 'Engaged',
'contact': '--'
}, {
'id': 'xxx-003',
'dev_name': 'rrrrr',
'department': 'IJK',
'loc': 'loc-003',
'hourly_rate': '00',
'current_Status': 'Qued(5)',
'contact': '--'
}, {
'id': 'xxx-004',
'dev_name': 'bbbbb',
'department': 'LMN',
'loc': 'loc-004',
'hourly_rate': '00',
'current_Status': 'Vacction',
'contact': '--'
}];
data.forEach(elm => {
const temp = [elm.id, elm.dev_name, elm.department, elm.loc, elm.hourly_rate, elm.current_Status, elm.contact];
rows.push(temp);
console.log('Rows', rows); // showing all data
});
downloadPDF.autoTable({
head: header,
body: rows,
});
downloadPDF.save('demo.pdf');
}
我不知道哪里做错了(在循环中)。目前,pdf 仅使用第一个 object 的第一个 属性 生成。 Header 也没有显示。试图在 jsbpdf autoTable 中加载 json 响应。暂时,请考虑以下模拟数据。
到目前为止,
test.ts
prepareDoc(){
const header = [['Devloper ID', 'Develoepr Name', 'Department', 'Location', 'Rate(Hr)', 'Current Status', 'Contact']];
const data = [{
'id': 'xxx-001',
'dev_name': 'qqqqq',
'department': 'ABC',
'loc': 'loc-001',
'hourly_rate': '00',
'current_Status': 'Open',
'contact': '--'
}, {
'id': 'xxx-002',
'dev_name': 'eeeee',
'department': 'DEF',
'loc': 'loc-002',
'hourly_rate': '00',
'current_Status': 'Engaged',
'contact': '--'
}, {
'id': 'xxx-003',
'dev_name': 'rrrrr',
'department': 'IJK',
'loc': 'loc-003',
'hourly_rate': '00',
'current_Status': 'Qued(5)',
'contact': '--'
}, {
'id': 'xxx-004',
'dev_name': 'bbbbb',
'department': 'LMN',
'loc': 'loc-004',
'hourly_rate': '00',
'current_Status': 'Vacction',
'contact': '--'
}];
data.forEach(elm => {
const temp = [elm.id, elm.dev_name, elm.department, elm.loc, elm.hourly_rate, elm.current_Status, elm.contact];
rows.push(temp);
console.log('Rows', rows); // showing all data
});
downloadPDF.autoTable(header, rows);
downloadPDF.save('demo.pdf');
}
html
<button (click)='prepareDoc()'></button>
问题
PFA:在没有 header 和其他数据的情况下生成 pdf
请帮我解决这个问题
你应该像这样使用 autoTable 方法:
downloadPDF.autoTable({
head: header,
body: rows,
});
它对我很有用。我用这个代码 https://codepen.io/anon/pen/WqvqVX:
检查了它const downloadPDF = new jsPDF();
function prepareDoc() {
const header = [['Devloper ID', 'Develoepr Name', 'Department', 'Location', 'Rate(Hr)', 'Current Status', 'Contact']];
const rows=[];
const data = [{
'id': 'xxx-001',
'dev_name': 'qqqqq',
'department': 'ABC',
'loc': 'loc-001',
'hourly_rate': '00',
'current_Status': 'Open',
'contact': '--'
}, {
'id': 'xxx-002',
'dev_name': 'eeeee',
'department': 'DEF',
'loc': 'loc-002',
'hourly_rate': '00',
'current_Status': 'Engaged',
'contact': '--'
}, {
'id': 'xxx-003',
'dev_name': 'rrrrr',
'department': 'IJK',
'loc': 'loc-003',
'hourly_rate': '00',
'current_Status': 'Qued(5)',
'contact': '--'
}, {
'id': 'xxx-004',
'dev_name': 'bbbbb',
'department': 'LMN',
'loc': 'loc-004',
'hourly_rate': '00',
'current_Status': 'Vacction',
'contact': '--'
}];
data.forEach(elm => {
const temp = [elm.id, elm.dev_name, elm.department, elm.loc, elm.hourly_rate, elm.current_Status, elm.contact];
rows.push(temp);
console.log('Rows', rows); // showing all data
});
downloadPDF.autoTable({
head: header,
body: rows,
});
downloadPDF.save('demo.pdf');
}