如何使用FabricJS和jsPDF以300 dpi的速度导出?

时间:2016-12-22 17:34:58

标签: javascript pdf canvas fabricjs jspdf

我试图弄清楚如何在pdf上以300 dpi的速度导出我的画布。

我发现了一些文章,展示了如何计算画布上像素的300dpi(What is the best practice to export canvas with high quality images?)以及使用jsPDF(Convert canvas to PDF)将其转换为pdf

但是,我不太确定如何在10cm x 6cm的画布上设计一些东西并以300dpi的速度输出。使用公式...

10cm * 300dpi / 2.54 = 1181px // width
6cm * 300dpi / 2.54 = 709px // height

我创建了一个宽1181像素,高709像素的画布。

然而,当我使用高度为100px×100px的Fabric.js创建对象时,我在画布上得到了这个。

enter image description here

然而,当我使用jspdf导出它时...我得到了这个......

enter image description here

以下是我的代码......

  // create a wrapper around native canvas element (with id="c")
  var canvas = new fabric.Canvas('canvas');
  canvas.backgroundColor = "white";

  // create a rectangle object
  var rect = new fabric.Rect({
    left: 0,
    top: 0,
    fill: 'red',
    width: 100,
    height: 100
  });

  // "add" rectangle onto canvas
  canvas.add(rect);

  $('#export-btn').click(function(){
    var imgData = canvas.toDataURL("image/jpeg", 1.0);
    var pdf = new jsPDF('l', 'mm', [60,100]);

    pdf.addImage(imgData, 'JPEG', 0, 0);
    var download = document.getElementById('download');

    pdf.save("download.pdf");
  });

我应该先将canvas.toDataURL()中导出的imgData调整大小,然后再将其传递给jsPDF吗?

0 个答案:

没有答案