1. 问题:在使用 OrgChart 组织架构图中,使用 jsPDF 下载 PDF 文件时,选中区域缩放,导致右边距和下边距变大,显示如图:
2. 原因:
exportPDF: function(canvas, exportFilename){
var doc = {};
var docWidth = Math.floor(canvas.width);
var docHeight = Math.floor(canvas.height);
if (!window.jsPDF) {
window.jsPDF = window.jspdf.jsPDF;
}
if (docWidth > docHeight) {
doc = new jsPDF({
orientation: 'landscape',
unit: 'px',
format: [docWidth, docHeight]
});
} else {
doc = new jsPDF({
orientation: 'portrait',
unit: 'px',
format: [docHeight, docWidth]
});
}
// 没有设置宽度导致问题
doc.addImage(canvas.toDataURL(), 'png', 0, 0);
doc.save(exportFilename + '.pdf');
},
3. 解决方案:增加宽度设置
// 设置宽度
var width = doc.internal.pageSize.getWidth();
var height = doc.internal.pageSize.getHeight();
doc.addImage(canvas.toDataURL(), 'png', 0, 0, width, height);
全部代码:
exportPDF: function(canvas, exportFilename){
var doc = {};
var docWidth = Math.floor(canvas.width);
var docHeight = Math.floor(canvas.height);
if (!window.jsPDF) {
window.jsPDF = window.jspdf.jsPDF;
}
if (docWidth > docHeight) {
doc = new jsPDF({
orientation: 'landscape',
unit: 'px',
format: [docWidth, docHeight]
});
} else {
doc = new jsPDF({
orientation: 'portrait',
unit: 'px',
format: [docHeight, docWidth]
});
}
// 设置宽度
var width = doc.internal.pageSize.getWidth();
var height = doc.internal.pageSize.getHeight();
doc.addImage(canvas.toDataURL(), 'png', 0, 0, width, height);
doc.save(exportFilename + '.pdf');
},
4. 修复后