Html内容或图片以PDF格式下载

233 阅读1分钟

Html内容以PDF格式下载

前端将html内容以PDF格式下载,可以用html2canvasjsPDF这两个工具结合使用。

html2canvas我们可以理解为截图,但是截图可能和你看到的不一定完全一致,因为它不会制作实际屏幕截图,而是根据页面上的可用信息构建屏幕截图。html2canvas通过读取 DOM 和应用于元素的不同样式,将当前页面呈现为画布图像。html2canvas在读取DOM时,一样会遵守浏览器的同源策略,所以遇到跨域的图片"截图"就不能保证正确。

html2canvas结合jsPDF将Html内容下载为PDF

    html2canvas(document.getElementById('content').then((canvas) => {
      let url = canvas.toDataURL('image/png');
      const pdf = new JsPDF('p', 'pt', 'a4'); // (横竖方向、指定坐标时使用的测量单位、格式)
      pdf.addImage(url, 'PNG', 30, 30, 560, 600); // (资源、文件格式、左右偏移、上下偏移、宽、高)
      pdf.save('name.pdf');
    });

图片(url)以PDF格式下载

拿到图片的url,将图片以PDF格式下载,需要先将图片转成base64格式,在使用jsPDF下载。

  function convertImgToBase64(url, callback, outputFormat) {
    let canvas = document.createElement('canvas');
    let ctx = canvas.getContext('2d');
    let img = new Image();
    img.setAttribute('crossOrigin', 'anonymous');
    img.onload = function() {
      canvas.height = img.height;
      canvas.width = img.width;
      ctx!.drawImage(img, 0, 0);
      var dataURL = canvas.toDataURL(outputFormat || 'image/png');
      callback.call(this, dataURL);
      canvas = null;
    };
    img.src = url;
  }