jsPDF - 在IE上获取黑色图像,但在Chrome和FireFox上运行正常

时间:2016-08-06 15:40:55

标签: javascript html highcharts jspdf

我需要一些关于以下问题的帮助,当我在Chrome和FireFox上获得带有图像的PDF格式时,我可以获得一个很好的结果,jsPDF会让它变得模糊,但我可以忍受它。

Result on Chrome

另一方面,在IE 10,11和Edge上,结果如下:

Result on IE

如果您注意到我们可以在照片上看到一些东西,但几乎是黑色的。

这些是来自highcharts的图表,我将svg转换为canvas。

我放了一些片段,但我可以发送电子邮件给整个例子:

  var doc = new jsPDF('p', 'pt', 'a4', true);
  var centered_x = (doc.internal.pageSize.width / 2) - ((context.destWidth / 2) * 0.75);

imgData_1 = atob(imgData_1);
doc.addImage(imgData_1, 'png', centered_x, 50);

data.datauri = context.browserSupportDownload && doc.output('datauristring');
data.blob = context.browserSupportBlob && doc.output('blob'); 

我调用函数download将流发送到浏览器,其定义如下:

  var download = function(highChartsObject, context, data) {
    if (!data || (!data.content && !(data.datauri || data.blob))) {
      throw new Error("Something went wrong while exporting the chart");
    }

    if (context.browserSupportDownload && (data.datauri || data.content)) {
      a = document.createElement('a');
      a.href = data.datauri || ('data:' + context.type + ';base64,' + window.btoa(unescape(encodeURIComponent(data.content))));
      a.download = 'result_good.pdf';
      document.body.appendChild(a);
      a.click();
      a.remove();
    }
    else if (context.browserSupportBlob && (data.blob || data.content)) {
      blobObject = data.blob || new Blob([data.content], { type: context.type });
      window.navigator.msSaveOrOpenBlob(blobObject, 'IE_CASE.pdf');
    }
    else {
      //window.open(data);
        window.navigator.msSaveOrOpenBlob(blobObject, 'IE_CASE.pdf');
    }
  };

提前致谢。

1 个答案:

答案 0 :(得分:0)

尝试使用canvas或svg更改图像的背景颜色。 https://github.com/MrRio/jsPDF/issues/247