首页 > 解决方案 > 如何使用 jsPDF 和 html2Canvas 计算转换为图像以适合 PDF 的 div 高度?

问题描述

我正在使用html2canvas将 div 转换为图像。

我想计算 div 的高度(以 px 为单位),使其适合 PDF 页面,保持图像的纵横比它应该适用于所有窗口尺寸(大屏幕、IPAD、台式机、笔记本电脑)。

我正在使用jsPDF生成 PDF

这是小提琴示例 http://jsfiddle.net/akshay1818/ys0z984x/51/

HTML 代码

<div id="target">
    Set div height(in px) such that it will fit on the page maintaing the aspect ratio
</div>

<button onclick="takeScreenShot()">to pdf</button>

JavaScript 代码

window.takeScreenShot =function() {
      const layout = document.getElementById("target");
      const doc = new jsPDF("l", "mm", "a4");

       const canvasimg = html2canvas(layout).then(async(canvasimg)=>{
            let doc = new jsPDF("l", "mm", "a4");
            let img = canvasimg.toDataURL('image/png');
            const imgProps = doc.getImageProperties(img);
            const pdfWidth = doc.internal.pageSize.getWidth();
            var pdfPgHt = doc.internal.pageSize.getHeight();
            const imgRatioHeight = (imgProps.height * pdfWidth) / imgProps.width;
            doc.addImage(img, 'PNG', 0, 0, pdfWidth, imgRatioHeight);
            doc.save('report.pdf');
       })
}

提前致谢。

标签: javascriptreactjsjspdfhtml2canvas

解决方案


推荐阅读