gpt4 book ai didi

angular - 在 Angular 8 中的 jsPDF 中添加来自另一个域的图像的 CORS 错误

转载 作者:行者123 更新时间:2023-12-04 15:34:06 32 4
gpt4 key购买 nike

我想在 jsPdf 中使用一些图像。这些图像来自另一个域 (API)。这是我的代码:

let img = new Image();
img.src = 'myUrl';
docPdf.addImage(img, 'JPEG', col, row, width, height, 'FAST');

但我收到此错误:
Access to image at 'http://127.0.0.1:8000/some-url' from origin 'http://127.0.0.1:4000' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.

ERROR Error: Supplied Data is not a valid base64-String jsPDF.convertStringToImageData
at Object.x.convertStringToImageData (jspdf.min.js:50)

然后我将 crossOrigin 添加到我的 url,但我也收到该错误。
img.crossOrigin = 'anonymous';

或者
img.crossOrigin = '匿名';

我还在后端设置了 cors 设置:
CORS_ORIGIN_ALLOW_ALL = True

最佳答案

为了澄清起见,我创建了一个 codesandbox .

我通常将我的图像添加为 base64encoded dataurls。如果图像来自不同的域(例如当您将图片链接存储在数据库中时),我将使用以下方法将图片转换为 baset64 客户端:

toDataURL(url, callback) {
var xhr = new XMLHttpRequest();
xhr.onload = function() {
var reader = new FileReader();
reader.onloadend = function() {
callback(reader.result);
};
reader.readAsDataURL(xhr.response);
};
xhr.open("GET", url);
xhr.responseType = "blob";
xhr.send();
},

created()方法(或仅当您需要将图像转换为 base64 时),您可以设置在数据 obj 中声明的 url 属性:
created() {
this.toDataURL(this.imgUrl, data => {
this.imgAsBase64 = data;
});
}

然后只需添加图像:
doc.addImage(this.imgAsBase64, "jpg", 10, 10);

你完成了。

关于angular - 在 Angular 8 中的 jsPDF 中添加来自另一个域的图像的 CORS 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60352403/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com