如何将KonvaJS canvas导出为包含图像的PDF文件?

问题描述 投票:1回答:2

我正在使用jsPDF将KonvaJS平台导出为PDF文件。在我尝试添加图像之前,它工作正常。

这里是我在做什么的一个例子:

var pdfGenerator = new jsPDF();
var imageObj = new Image();
imageObj.onload = function() {
    var konvaImage = new Konva.Image({
        x: 0,
        y: 0,
        image: imageObj
    });

    layer.add(konvaImage);
    stage.add(layerPDF);
    layer.draw();

    var dataURL = stagePDF.toDataURL({pixelRatio: 2});
    pdfGenerator.addImage(dataURL, 'JPEG', 10, 10, 189, 267);

    pdfGenerator.save('stage.pdf');
};
imageObj.src = 'absolute-path-to-image.png';

当我尝试它时,出现此错误:

jspdf.min.js:50 Uncaught Error: Supplied data is not a JPEG
    at jspdf.min.js:50
    at Object.x.processJPEG (jspdf.min.js:50)
    at Object.x.addImage (jspdf.min.js:50)
    at Image.imageObj.onload (a9ad15f30fefd32778:468)

有什么问题的想法吗?如果仅使用Rect和Circle这样的KonvaJS形状,则可以使用。

konvajs
2个回答
1
投票

默认情况下node.toDataURL()为png图像生成base64。从您的邮件中可以看到,您需要提供jpg图片。您可以使用此:

var dataURL = stagePDF.toDataURL({
  pixelRatio: 2,
  mimeType: 'image/jpeg'
});
pdfGenerator.addImage(dataURL, 'JPEG', 10, 10, 189, 267);

1
投票

我在imageObj.crossOrigin = "Anonymous";之前添加了imageObj.src = 'absolute-path-to-image.png';,并对其进行了修复。这是一个跨域问题,与KonvaJS无关。

© www.soinside.com 2019 - 2024. All rights reserved.