@@ -22,6 +22,9 @@ var enableSVGDownload = function (classView) {
22
22
23
23
var par = svg . parentNode ;
24
24
svg = svg . cloneNode ( true ) ;
25
+ svg . style . position = "fixed" ;
26
+ svg . style . left = 0 ;
27
+ svg . style . top = 0 ;
25
28
par . appendChild ( svg ) ;
26
29
var gGroup = svg . childNodes [ 0 ] ;
27
30
@@ -40,9 +43,12 @@ var enableSVGDownload = function (classView) {
40
43
svg . setAttributeNS ( prefix . xmlns , "xmlns:xlink" , prefix . xlink ) ;
41
44
}
42
45
46
+ svg . style . zIndex = 0 ;
47
+ gGroup . setAttribute ( "transform" , "" ) ;
48
+ var gRect = gGroup . getBoundingClientRect ( ) ;
49
+ gGroup . setAttribute ( "transform" , "translate(" + ( - gRect . left ) + "," + ( - gRect . top ) + ")" ) ;
43
50
svg . setAttribute ( "width" , gGroup . getBBox ( ) . width ) ;
44
51
svg . setAttribute ( "height" , gGroup . getBBox ( ) . height ) ;
45
- gGroup . setAttribute ( "transform" , "" ) ;
46
52
47
53
setInlineStyles ( svg , emptySvgDeclarationComputed ) ;
48
54
@@ -82,12 +88,17 @@ var enableSVGDownload = function (classView) {
82
88
83
89
img . onload = function ( ) {
84
90
ctx . drawImage ( img , 0 , 0 ) ;
85
- var dataURL = canvas . toDataURL ( "image/png" ) ;
86
- var a = document . createElement ( "a" ) ;
87
- a . setAttribute ( "download" , filename + ".png" ) ;
88
- a . setAttribute ( "href" , dataURL /*url*/ ) ;
89
- document . body . appendChild ( a ) ;
90
- a . click ( ) ;
91
+ try {
92
+ var a = document . createElement ( "a" ) ;
93
+ a . setAttribute ( "download" , filename + ".png" ) ;
94
+ var dataURL = canvas . toDataURL ( "image/png" ) ;
95
+ a . setAttribute ( "href" , dataURL /*url*/ ) ;
96
+ document . body . appendChild ( a ) ;
97
+ a . click ( ) ;
98
+ } catch ( e ) {
99
+ alert ( "This browser does not allow usage of canvas.toDataURL function. Please,"
100
+ + " use different browser to download the image." ) ;
101
+ }
91
102
setTimeout ( function ( ) {
92
103
a . parentNode . removeChild ( a ) ;
93
104
document . body . removeChild ( emptySvg ) ;
0 commit comments