在 jsPDF 中插入 firestore 上传的图片
Insert firestore uploaded image in jsPDF
我在 Firestore 中上传了一张图片,我可以在我的 Angular 应用程序中下载 URL。
下载URL就像:
当我点击它时,网络浏览器显示图像,但我如何将它包含在 jsPDF 文档中?我尝试这样做:
const doc = new jsPDF('portrait', 'mm', 'a4');
doc.addImage(this.downloadURL, 'JPEG', 30, 20);
但是我得到这个错误:
ERROR Error: Supplied Data is not a valid base64-String jsPDF.convertStringToImageData
at Object.x.convertStringToImageData (jspdf.min.js:50)
at Object.x.addImage
谢谢!
根据 jsPDF documentation the addImage
method 接受其 imageData
这些格式:
imageData
: string
| HTMLImageElement
| HTMLCanvasElement
| Uint8Array
imageData as base64 encoded DataUrl or Image-HTMLElement or Canvas-HTMLElement
所以你不能简单地传入一个指向图像的 URL。
将图像转换为支持格式的简单方法是在代码中创建 img
元素:
var img = document.createElement('img');
img.src = this.downloadURL;
doc.addImage(img, 'JPEG', 30, 20);
我通过以下步骤完成了这项工作:
首先,按照这个解决方案
我用了下面的cors.json
[
{
"origin": [
"*"
],
"method": [
"GET"
],
"maxAgeSeconds": 3600
}
]
然后只需使用以下代码阅读您的 url 并将其添加到您的 pdf 中:
async generatePDF(your_image_url: string) {
let imageLoaded: HTMLImageElement = await this.getDataUri(your_image_url);
let pdf = new jsPDF('p', 'pt', 'a4');
pdf.addImage(imageLoaded, 0, 0, 250, 250);
pdf.save('test.pdf');
}
async getDataUri(url): Promise<HTMLImageElement> {
return new Promise(resolve => {
var image = new Image();
image.onload = () => {
resolve(image);
};
image.src = url;
})
}
希望这对你有帮助,我一直在寻找这个解决方案,所以尽可能多地分享。
此致。
我在 Firestore 中上传了一张图片,我可以在我的 Angular 应用程序中下载 URL。
下载URL就像:
当我点击它时,网络浏览器显示图像,但我如何将它包含在 jsPDF 文档中?我尝试这样做:
const doc = new jsPDF('portrait', 'mm', 'a4');
doc.addImage(this.downloadURL, 'JPEG', 30, 20);
但是我得到这个错误:
ERROR Error: Supplied Data is not a valid base64-String jsPDF.convertStringToImageData
at Object.x.convertStringToImageData (jspdf.min.js:50)
at Object.x.addImage
谢谢!
根据 jsPDF documentation the addImage
method 接受其 imageData
这些格式:
imageData
:string
|HTMLImageElement
|HTMLCanvasElement
|Uint8Array
imageData as base64 encoded DataUrl or Image-HTMLElement or Canvas-HTMLElement
所以你不能简单地传入一个指向图像的 URL。
将图像转换为支持格式的简单方法是在代码中创建 img
元素:
var img = document.createElement('img');
img.src = this.downloadURL;
doc.addImage(img, 'JPEG', 30, 20);
我通过以下步骤完成了这项工作:
首先,按照这个解决方案
我用了下面的cors.json
[
{
"origin": [
"*"
],
"method": [
"GET"
],
"maxAgeSeconds": 3600
}
]
然后只需使用以下代码阅读您的 url 并将其添加到您的 pdf 中:
async generatePDF(your_image_url: string) {
let imageLoaded: HTMLImageElement = await this.getDataUri(your_image_url);
let pdf = new jsPDF('p', 'pt', 'a4');
pdf.addImage(imageLoaded, 0, 0, 250, 250);
pdf.save('test.pdf');
}
async getDataUri(url): Promise<HTMLImageElement> {
return new Promise(resolve => {
var image = new Image();
image.onload = () => {
resolve(image);
};
image.src = url;
})
}
希望这对你有帮助,我一直在寻找这个解决方案,所以尽可能多地分享。
此致。