|
@@ -60,7 +60,7 @@ class SvgToImage {
|
|
let url = domUrl.createObjectURL(blob);
|
|
let url = domUrl.createObjectURL(blob);
|
|
this.loadImage(url, p_opt, function(err, img) {
|
|
this.loadImage(url, p_opt, function(err, img) {
|
|
domUrl.revokeObjectURL(url);
|
|
domUrl.revokeObjectURL(url);
|
|
- if (err) {
|
|
|
|
|
|
+ if (err || SvgToImage.checkCanvasToDataURL(img) === null) {
|
|
// try again for Safari 8.0, using simple encodeURIComponent
|
|
// try again for Safari 8.0, using simple encodeURIComponent
|
|
// this will fail with DOM content but at least it works with SVG.
|
|
// this will fail with DOM content but at least it works with SVG.
|
|
let url2 = 'data:image/svg+xml,' + encodeURIComponent(p_svg.join(''));
|
|
let url2 = 'data:image/svg+xml,' + encodeURIComponent(p_svg.join(''));
|
|
@@ -74,4 +74,19 @@ class SvgToImage {
|
|
static getUrl() {
|
|
static getUrl() {
|
|
return window.URL || window.webkitURL || window.mozURL || window.msURL;
|
|
return window.URL || window.webkitURL || window.mozURL || window.msURL;
|
|
}
|
|
}
|
|
|
|
+
|
|
|
|
+ static checkCanvasToDataURL(p_image) {
|
|
|
|
+ let canvas = document.createElement('canvas');
|
|
|
|
+ let ctx = canvas.getContext('2d');
|
|
|
|
+ canvas.height = p_image.height;
|
|
|
|
+ canvas.width = p_image.width;
|
|
|
|
+ ctx.drawImage(p_image, 0, 0);
|
|
|
|
+ let dataUrl = null;
|
|
|
|
+ try {
|
|
|
|
+ dataUrl = canvas.toDataURL();
|
|
|
|
+ } catch (err) {
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+ return dataUrl
|
|
|
|
+ }
|
|
}
|
|
}
|