javascript - html2canvas/jsPDF - 将 html 转换为 pdf 时不显示图像

标签 javascript canvas jspdf html2canvas

我希望将一些简单的 HTML 转换为 PDF。执行此操作并保持 css 样式的最简单方法似乎是首先使用“html2canvas”js 库将 html 转换为 Canvas ,然后使用 jsPDF 创建 PDF。

我遇到的问题是,我的 HTML 中同时包含背景图片和内联图片,但转换后均未显示在 PDF 中。我在这里创建了一个代码笔:https://codepen.io/adamboother/pen/NWGeqom

这是我进行转换的 js:

function convertToPdf()
{
    html2canvas(document.querySelector('#certificate')).then(canvas => {
        let pdf = new jsPDF('landscape', 'mm', 'a4');

        pdf.addImage(canvas.toDataURL('image/png'), 'PNG', 0, 0, pdf.internal.pageSize.width, pdf.internal.pageSize.height);

        pdf.save('certificate.pdf');
    });
}

有没有人找到解决办法?

最佳答案

我正在对你的代码使用 useCORS: true 并且它有效,假设你的图像在服务器中。此外,您还可以按照以下代码操作:

function convertToPdf()
{ 
    html2canvas(document.querySelector('#certificate'), {useCORS: true}).then(function(canvas) {
      let img = new Image();
      img.src = canvas.toDataURL('image/png');
      img.onload = function () {
        let pdf = new jsPDF('landscape', 'mm', 'a4');
        pdf.addImage(img, 0, 0, pdf.internal.pageSize.width, pdf.internal.pageSize.height);
        pdf.save('certificate.pdf');
      };
    });
}

关于javascript - html2canvas/jsPDF - 将 html 转换为 pdf 时不显示图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61896577/

相关文章:

php - setInterval 内的 JavaScript setTimeout

javascript - 如何组合css选择器

javascript - Canvas 线性缩小

javascript - 从vuejs中的方法设置数据

javascript - 从字符串中取出图像标签并将其放入数组中

javascript - Android 上的 Html5 canvas 动画速度慢

javascript - 如何在完成 onload 事件后运行函数?

javascript - jsPDF大表,标题在第二页重叠

javascript - 如何使用 Javascript 为下载的 PDF 文件设置密码保护

javascript - 将 MathJax 渲染成 PDF