使用jsPDF导出div时内容被截断,求解决方案
解决jsPDF导出宽div内容截断问题
问题核心是你的div宽度(800px≈600pt)超过了A4纵向页面的可用宽度(A4纵向宽度为595pt,减去边距后可用宽度更小),导致内容被截断。以下是几种可行的解决方法:
方法1:切换PDF页面为横向
把A4页面改成横向,页面宽度变为842pt,足够容纳800px的内容:
savePdf() { // 'l'表示横向(landscape),替代默认的纵向'p' let doc = new jsPDF('l', 'pt', 'a4'); const pdfTable = this.content.nativeElement; doc.html(pdfTable, { callback(rst) { rst.save('one.pdf'); }, x: 10, y: 10 }); }
方法2:缩放内容适配纵向页面宽度
如果必须使用纵向页面,可通过html配置的width参数强制缩放内容到页面可用宽度:
savePdf() { let doc = new jsPDF('p', 'pt', 'a4'); const pdfTable = this.content.nativeElement; // 计算页面可用宽度:A4纵向总宽度减去左右边距 const pageWidth = doc.internal.pageSize.getWidth() - 20; doc.html(pdfTable, { callback(rst) { rst.save('one.pdf'); }, x: 10, y: 10, width: pageWidth // 强制内容缩放到该宽度 }); }
方法3:添加PDF导出专用样式
给目标div添加仅在导出时生效的样式,调整宽度避免缩放变形:
savePdf() { let doc = new jsPDF('p', 'pt', 'a4'); const pdfTable = this.content.nativeElement; // 临时修改元素宽度为页面可用宽度 const originalWidth = pdfTable.style.width; pdfTable.style.width = '575pt'; doc.html(pdfTable, { callback(rst) { rst.save('one.pdf'); // 导出完成后恢复原宽度 pdfTable.style.width = originalWidth; }, x: 10, y: 10 }); }
内容的提问来源于stack exchange,提问作者4dvanc3d
相关产品推荐
相关产品推荐

