【问题标题】:Insert firestore uploaded image in jsPDF在jsPDF中插入firestore上传的图像
【发布时间】:2020-03-26 12:24:30
【问题描述】:

我在 Firestore 中上传了一张图片,并且能够在我的 Angular 应用程序中获取下载 URL。

下载地址如下:

https://firebasestorage.googleapis.com/v0/b/appname.appspot.com/o/clinica%2Flogo?alt=media&token=123456789-2bf7-4711-ba17-d12345678

当我点击它时,网络浏览器会显示图像,但我如何将它包含在 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

谢谢!

【问题讨论】:

    标签: javascript image firebase firebase-storage jspdf


    【解决方案1】:

    根据jsPDF documentationaddImage method 接受以下格式的imageData

    imageData: string | HTMLImageElement | HTMLCanvasElement | Uint8Array

    imageData 作为 base64 编码的 DataUrl 或 Image-HTMLElement 或 Canvas-HTMLElement

    因此,您不能简单地传入指向图像的 URL。

    将图像转换为支持格式的一种简单方法是在代码中创建img 元素:

    var img = document.createElement('img');
    img.src = this.downloadURL;
    doc.addImage(img, 'JPEG', 30, 20);
    

    【讨论】:

    【解决方案2】:

    我通过以下步骤来完成这项工作:

    首先,按照这个解决方案Set CORS in your firebase Storage

    我使用了以下 cors.json

    [
     {
       "origin": [
           "*"
       ],
       "method": [
           "GET"
       ],
       "maxAgeSeconds": 3600
     }
    ]
    

    然后只需使用以下代码读取您的网址并将其添加到您的 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;
        })
     }
    

    希望对你有帮助,我一直在寻找这个解决方案,所以尽可能多地分享。

    问候。

    【讨论】:

      猜你喜欢
      • 2021-05-27
      • 2020-11-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-06-15
      • 2011-02-14
      相关资源
      最近更新 更多