11import Canvg from 'canvg'
2+
3+ let head = `<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">`
24let IMG_PADDING = 40
35let $d = document
4- // calculate distances to center from top,left,bottom,right
5-
66let maxTop , maxBottom , maxLeft , maxRight , svgHeight , svgWidth
77
88function initVar ( ) {
@@ -14,18 +14,18 @@ function initVar() {
1414 svgWidth = 0
1515}
1616
17- let head = `<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">`
1817function generateSvgDom ( ) {
1918 let primaryNodes = $d . querySelectorAll ( '.box > grp, root' )
2019 let svgContent = ''
20+ // calculate distance to center from top, left, bottom, right
2121 for ( let i = 0 ; i < primaryNodes . length ; i ++ ) {
2222 let primaryNode = primaryNodes [ i ]
2323 let rect = primaryNode . getBoundingClientRect ( )
2424 let top = primaryNode . offsetTop
2525 let bottom = top + rect . height
2626 let left = primaryNode . offsetLeft
2727 let right = left + rect . width
28- // console.log(top, bottom, left, right)
28+
2929 if ( top < maxTop ) {
3030 maxTop = top
3131 }
@@ -38,11 +38,16 @@ function generateSvgDom() {
3838 if ( right > maxRight ) {
3939 maxRight = right
4040 }
41+ }
42+
43+ for ( let i = 0 ; i < primaryNodes . length ; i ++ ) {
44+ let primaryNode = primaryNodes [ i ]
45+ if ( primaryNode . tagName === 'ROOT' ) continue
4146 svgContent += PrimaryToSvg ( primaryNode )
4247 }
4348 console . log ( maxTop , maxBottom , maxLeft , maxRight )
4449 svgContent += RootToSvg ( )
45- // 需要添加图片边缘padding
50+ // image margin
4651 svgHeight = maxBottom - maxTop + IMG_PADDING * 2
4752 svgWidth = maxRight - maxLeft + IMG_PADDING * 2
4853 // svgContent += customLinkTransform()
0 commit comments