Html2canvas: 'SVGElement.offsetWidth'λŠ” 더 이상 μ‚¬μš©λ˜μ§€ μ•ŠμœΌλ©° 2016λ…„ 4μ›”κ²½ M50μ—μ„œ μ œκ±°λ©λ‹ˆλ‹€.

에 λ§Œλ“  2016λ…„ 04μ›” 09일  Β·  26μ½”λ©˜νŠΈ  Β·  좜처: niklasvh/html2canvas

Google은 SVG에 λŒ€ν•œ "offsetWidth" 지원을 κ±°λΆ€ν–ˆμŠ΅λ‹ˆλ‹€.
아이디어가 μžˆμŠ΅λ‹ˆκΉŒ?

λ¬Έμ„œ: https://www.chromestatus.com/features/5724912467574784

κ°€μž₯ μœ μš©ν•œ λŒ“κΈ€

ν•΄κ²°ν–ˆμŠ΅λ‹ˆλ‹€... ν•΄κ²°λ˜λ©΄ μ΄λ²ˆμ£Όλ§μ— μΆ”κ°€ν•˜κ² μŠ΅λ‹ˆλ‹€
μ‹œκ°„μ΄. λŠ¦μ–΄μ„œ μ£„μ†‘ν•©λ‹ˆλ‹€... FF, Safari 및 Chromeμ—μ„œ μž‘λ™ν•©λ‹ˆλ‹€.
μ΅œμƒμ˜.
2016λ…„ 6μ›” 29일 μˆ˜μš”μΌ 19:00에 Yuki K [email protected]이 λ‹€μŒκ³Ό 같이 μΌμŠ΅λ‹ˆλ‹€.

@Dayjo https://github.com/Dayjo λ„€, 저도 μ•Œμ•„μ°¨λ ΈμŠ΅λ‹ˆλ‹€. SVGλŠ”
μ™„μ „νžˆ 잘λͺ»λœ μœ„μΉ˜μ— 있으며 거의 ​​항상 ν™”λ©΄μ—μ„œ λ²—μ–΄λ‚¬μŠ΅λ‹ˆλ‹€.
λͺ¨λ“  μ˜€ν”„μ…‹*은 μ •μ˜λ˜μ§€ μ•Šμ€ κ²ƒμœΌλ‘œ ν‰κ°€λ©λ‹ˆλ‹€. λ‚˜λ„ ν•΄κ²°ν•΄λ΄€λ‹€.
이것은 μž¬κ·€μ  getBoundingClientRectλ₯Ό μ‚¬μš©ν•˜μ§€λ§Œ 운이 μ—†μŠ΅λ‹ˆλ‹€.
λ‹Ήμ‹ μ˜ 지점을 봐.

β€”
당신이 μ–ΈκΈ‰λ˜μ—ˆκΈ° λ•Œλ¬Έμ— 이것을 λ°›λŠ” κ²ƒμž…λ‹ˆλ‹€.
이 이메일에 직접 λ‹΅μž₯ν•˜κ³  GitHubμ—μ„œ ν™•μΈν•˜μ„Έμš”.
https://github.com/niklasvh/html2canvas/issues/846#issuecomment -229420457,
λ˜λŠ” μŠ€λ ˆλ“œ μŒμ†Œκ±°
https://github.com/notifications/unsubscribe/ABWsecUQ2l-rxisMZ4HCKu1nh-mbIMU1ks5qQqSQgaJpZM4IDr12
.

λͺ¨λ“  26 λŒ“κΈ€

이것을 올리렀고 ν–ˆλ˜ κ²ƒμž…λ‹ˆλ‹€! 이번 달에 μž‘λ™μ΄ 쀑지될 것이 μ•½κ°„ μš°λ €λ©λ‹ˆλ‹€.

예, λΆ„λͺ…νžˆ Opera 37 λ² νƒ€μ—μ„œλŠ” μž‘λ™ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. λ˜ν•œ ν”ŒλŸ¬κ·ΈμΈμ˜ μ΅œμ‹  λ²„μ „μ—μ„œλŠ” λ°°κ²½κ³Ό ν…Œλ‘λ¦¬λ₯Ό ν‘œμ‹œν•˜λŠ” λ¬Έμ œκ°€ μžˆμŠ΅λ‹ˆλ‹€. λ‚˜λŠ” ν•˜λ‚˜, 그듀은 ν™•μΈν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€?

데λͺ¨μ—μ„œλ„ λ°°κ²½κ³Ό ν…Œλ‘λ¦¬κ°€ ν‘œμ‹œλ˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€((

SVGκ°€ 더 이상 λ Œλ”λ§λ˜μ§€ μ•ŠκΈ° λ•Œλ¬Έμ— 이것은 큰 λ¬Έμ œμž…λ‹ˆλ‹€.

κ°€μž₯ 큰 원인은 이 ν•¨μˆ˜μ— μžˆμŠ΅λ‹ˆλ‹€.

function offsetBounds(node) {
    var parent = node.offsetParent ? offsetBounds(node.offsetParent) : {top: 0, left: 0};

    return {
        top: node.offsetTop + parent.top,
        bottom: node.offsetTop + node.offsetHeight + parent.top,
        right: node.offsetLeft + parent.left + node.offsetWidth,
        left: node.offsetLeft + parent.left,
        width: node.offsetWidth,
        height: node.offsetHeight
    };
}

html2canvas.js의 lines 1887 - 1898

λͺ¨λ“  offsetTop, offsetLeft, offsetWidth, offsetHeight λŠ” 이제 SVG에 λŒ€ν•΄ μ •μ˜λ˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.

ꢌμž₯λ˜λŠ” μ†”λ£¨μ…˜μ€ getBoundingClientRect() μ΄μ§€λ§Œ μ—¬μ „νžˆ μž‘λ™ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.

λˆ„κ΅¬λ“ μ§€ 이것에 λŒ€ν•œ 해결책이 μžˆμŠ΅λ‹ˆκΉŒ?

@MarcBalaban 아직 μ‹œλ„ν•˜μ§€ μ•Šμ•˜μ§€λ§Œ ν•΄λ‹Ή ν•¨μˆ˜μ˜ λ°˜ν™˜ μœ„μ— 이것을 μΆ”κ°€ν•˜λŠ” 것은 μ•„λ‹™λ‹ˆλ‹€.

if ( node.tagName === 'SVG' ) {
    return node.getBoundingClientRect();
  }

@Dayjo λΆˆν–‰νžˆλ„, 그것은 ν™•μ‹€νžˆ μ˜¬λ°”λ₯Έ 길에 μžˆμ§€λ§Œμ΄ 라인

var parent = node.offsetParent ? offsetBounds(node.offsetParent) : {top: 0, left: 0};

offsetParent도 κ°κ°€μƒκ°λ˜μ—ˆμœΌλ―€λ‘œ μ œλŒ€λ‘œ μ‹€ν–‰λ˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.

흠, 쑰금 더 μ‚΄νŽ΄λ³΄λ©΄ getBoundingBoxInArbitrarySpace ν•¨μˆ˜μ™€ 같은 것을 μ—¬κΈ°μ—μ„œ μ‚¬μš©ν•΄μ•Ό ν•  μˆ˜λ„ μžˆμŠ΅λ‹ˆλ‹€. http://stackoverflow.com에 따라 https://svn.apache.org/repos/asf/commons/sandbox/gsoc/2010/scxml-js/trunk/src/javascript/scxml/cgf/util/svg.js /questions/5996005/how-to-use-element-offsetparent-with-html-svg-elements#answers

아직 μ–΄λ–€ μ’…λ₯˜μ˜ ν…ŒμŠ€νŠΈλ„ ν•  κΈ°νšŒκ°€ μ—†μ—ˆμŠ΅λ‹ˆλ‹€.

이 λ¬Έμ œμ— λŒ€ν•œ μ†Œμ‹μ΄ μžˆμŠ΅λ‹ˆκΉŒ? 감사 ν•΄μš”!

@chemitaxis - 경고에도 λΆˆκ΅¬ν•˜κ³  μ§€κΈˆκΉŒμ§€ html2canvas의 결과에 λ¬Έμ œκ°€ μ—†μ—ˆμŠ΅λ‹ˆλ‹€. κ·ΈλŸ¬λ‚˜ 이 λ³€κ²½ 사항이 μ‹€μ œλ‘œ Chromeμ—μ„œ κ΅¬ν˜„λ˜λŠ”μ§€ μ—¬λΆ€λŠ” λˆ„κ°€ μ•Œ 수 μžˆμŠ΅λ‹ˆκΉŒ?

이제 Chrome μž‘λ™μ΄ μ€‘μ§€λœ 것 κ°™μŠ΅λ‹ˆλ‹€. SVGκ°€ μ „ν˜€ λ Œλ”λ§λ˜μ§€ μ•Šκ±°λ‚˜, 잘λͺ»λ˜κ±°λ‚˜, 잘λͺ»λœ 배율둜/μΊ”λ²„μŠ€μ˜ μœ„μΉ˜μ— μžˆλŠ” 것 κ°™μŠ΅λ‹ˆλ‹€.

@niklasvh - 이에 λŒ€ν•œ 생각이 μžˆμŠ΅λ‹ˆκΉŒ? λ‚˜μ—κ²Œ μ‹œκ°„μ΄ μžˆμ—ˆλ‹€λ©΄ λ‚˜λŠ” ν–‰λ³΅ν•˜κ²Œ 고침에 bashλ₯Ό 가지고 μžˆμ—ˆμ„ 것이닀. κ·ΈλŸ¬λ‚˜ λ‚˜λŠ” ν˜„μž¬λ‘œμ„œλŠ” choca이닀.

λ‚˜λŠ” https://svn.apache.org/repos/asf/commons/sandbox/gsoc/2010/scxml-js/trunk/src/javascript/scxml/cgf/util/svg.jsλ₯Ό μ‚¬μš©ν•˜μ—¬ 이것을 μ‹œλ„ν–ˆμŠ΅λ‹ˆλ‹€.

κ·ΈλŸ¬λ‚˜ 어디에 κ΅¬ν˜„ν•΄μ•Ό ν•˜λŠ”μ§€ 잘 λͺ¨λ₯΄κ² μ–΄μ„œ offsetBounds 및 getBounds ν•¨μˆ˜λ₯Ό λͺ¨λ‘ μ‹œλ„ν–ˆμ§€λ§Œ 아무 μ†Œμš©μ΄ μ—†μ—ˆμŠ΅λ‹ˆλ‹€. X 및 Y μ’Œν‘œλŠ” μ˜¬λ°”λ₯Έ 것 κ°™μ§€λ§Œ λ„ˆλΉ„μ™€ 높이가 λͺ¨λ‘ 잘λͺ»λ˜μ—ˆμŠ΅λ‹ˆλ‹€. CSSλ₯Ό μ‚¬μš©ν•˜μ—¬ μ»¨ν…Œμ΄λ„ˆμ˜ λ„ˆλΉ„μ™€ μžλ™ 높이λ₯Ό 100%둜 λ§Œλ“€κΈ° λ•Œλ¬ΈμΈμ§€ ν™•μ‹€ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. μ’€ 더 κ΄‘λ²”μœ„ν•œ ν…ŒμŠ€νŠΈλ₯Ό μˆ˜ν–‰ν•΄μ•Ό ν•©λ‹ˆλ‹€.

μ΅œμ‹  베타 컀밋을 μ‚¬μš©ν•˜μ—¬ μ—¬κΈ°(https://github.com/Dayjo/html2canvas/tree/issue-846)μ—μ„œ 진행 쀑인 μ˜ˆλΉ„ λΆ„κΈ°κ°€ μžˆμŠ΅λ‹ˆλ‹€. ν…ŒμŠ€νŠΈν•˜λ €λŠ” μ‚¬λžŒμ΄ 있으면 dist 버전을 μ‚¬μš©ν•˜κ±°λ‚˜ μ›ν•˜λŠ” 경우 λ‹€μ‹œ λΉŒλ“œν•  수 μžˆμ–΄μ•Ό ν•©λ‹ˆλ‹€. μ–Όλ§ˆλ‚˜ 잘 μž‘λ™ν•˜λŠ”μ§€ / μ „ν˜€ μž‘λ™ν•˜μ§€ μ•Šμ„μ§€ λͺ¨λ¦…λ‹ˆλ‹€.

@Dayjo λ„€, 저도 이것을 μ•Œμ•„μ°¨λ ΈμŠ΅λ‹ˆλ‹€. SVGλŠ” μ™„μ „νžˆ 잘λͺ»λœ μœ„μΉ˜μ— 있으며 λͺ¨λ“  μ˜€ν”„μ…‹*이 μ •μ˜λ˜μ§€ μ•Šμ€ κ²ƒμœΌλ‘œ ν‰κ°€λ˜λ―€λ‘œ 거의 항상 ν™”λ©΄μ—μ„œ λ²—μ–΄λ‚©λ‹ˆλ‹€. λ˜ν•œ μž¬κ·€μ  getBoundingClientRectλ₯Ό μ‚¬μš©ν•˜μ—¬ 이 문제λ₯Ό ν•΄κ²°ν•˜λ €κ³  μ‹œλ„ν–ˆμ§€λ§Œ 운이 μ—†μŠ΅λ‹ˆλ‹€. (κ·€ν•˜μ˜ 지점을 μ‚΄νŽ΄λ³΄κ² μŠ΅λ‹ˆλ‹€.

ν•΄κ²°ν–ˆμŠ΅λ‹ˆλ‹€... ν•΄κ²°λ˜λ©΄ μ΄λ²ˆμ£Όλ§μ— μΆ”κ°€ν•˜κ² μŠ΅λ‹ˆλ‹€
μ‹œκ°„μ΄. λŠ¦μ–΄μ„œ μ£„μ†‘ν•©λ‹ˆλ‹€... FF, Safari 및 Chromeμ—μ„œ μž‘λ™ν•©λ‹ˆλ‹€.
μ΅œμƒμ˜.
2016λ…„ 6μ›” 29일 μˆ˜μš”μΌ 19:00에 Yuki K [email protected]이 λ‹€μŒκ³Ό 같이 μΌμŠ΅λ‹ˆλ‹€.

@Dayjo https://github.com/Dayjo λ„€, 저도 μ•Œμ•„μ°¨λ ΈμŠ΅λ‹ˆλ‹€. SVGλŠ”
μ™„μ „νžˆ 잘λͺ»λœ μœ„μΉ˜μ— 있으며 거의 ​​항상 ν™”λ©΄μ—μ„œ λ²—μ–΄λ‚¬μŠ΅λ‹ˆλ‹€.
λͺ¨λ“  μ˜€ν”„μ…‹*은 μ •μ˜λ˜μ§€ μ•Šμ€ κ²ƒμœΌλ‘œ ν‰κ°€λ©λ‹ˆλ‹€. λ‚˜λ„ ν•΄κ²°ν•΄λ΄€λ‹€.
이것은 μž¬κ·€μ  getBoundingClientRectλ₯Ό μ‚¬μš©ν•˜μ§€λ§Œ 운이 μ—†μŠ΅λ‹ˆλ‹€.
λ‹Ήμ‹ μ˜ 지점을 봐.

β€”
당신이 μ–ΈκΈ‰λ˜μ—ˆκΈ° λ•Œλ¬Έμ— 이것을 λ°›λŠ” κ²ƒμž…λ‹ˆλ‹€.
이 이메일에 직접 λ‹΅μž₯ν•˜κ³  GitHubμ—μ„œ ν™•μΈν•˜μ„Έμš”.
https://github.com/niklasvh/html2canvas/issues/846#issuecomment -229420457,
λ˜λŠ” μŠ€λ ˆλ“œ μŒμ†Œκ±°
https://github.com/notifications/unsubscribe/ABWsecUQ2l-rxisMZ4HCKu1nh-mbIMU1ks5qQqSQgaJpZM4IDr12
.

@chemitaxis ꡉμž₯ν•©λ‹ˆλ‹€! μˆ˜μ •μ„ κΈ°λŒ€ν•©λ‹ˆλ‹€.

@chemitaxis μ•Ό, μ‹œκ°„μ΄ 있으면 PRμ΄λ‚˜ 포크 링크λ₯Ό λ§Œλ“€ 수 μžˆλ‹ˆ?

@chemitaxis 이에 λŒ€ν•œ 진전이 μžˆμŠ΅λ‹ˆκΉŒ? 특히 IEμ—μ„œ λ‚΄ SVG λ¬Έμ œκ°€ λͺ¨λ‘ ν•΄κ²°λ˜λŠ”μ§€ ν™•μΈν•˜κΈ° μœ„ν•΄ μˆ˜ν–‰ 쀑인 ν”„λ‘œμ νŠΈμ—μ„œ μ½”λ“œλ₯Ό ν…ŒμŠ€νŠΈν•˜κ³  μ‹ΆμŠ΅λ‹ˆλ‹€.

μ•ˆλ…•ν•˜μ„Έμš” @atdiff :) λ‹€λ₯Έ 라이브러리λ₯Ό μ‚¬μš©ν•˜μ—¬ 문제λ₯Ό ν•΄κ²°ν–ˆμŠ΅λ‹ˆλ‹€...

μˆ˜μ •μ€ μ•„λ‹ˆμ§€λ§Œ μž‘μ€ ν•΄κ²° 방법을 μ°Ύμ•˜μŠ΅λ‹ˆλ‹€. λ˜ν•œ SVGκ°€ Chromeμ—μ„œ μ œλŒ€λ‘œ ν‘œμ‹œλ˜λ„λ‘ ν•  수 μ—†μ§€λ§Œ Safariμ—μ„œλŠ” ν‘œμ‹œλ©λ‹ˆλ‹€. λ‚΄κ°€ ν•œ 것은 SVG 인라인 μš”μ†Œμ— λ„ˆλΉ„ 속성을 μΆ”κ°€ν•˜λŠ” κ²ƒλΏμ΄μ—ˆμŠ΅λ‹ˆλ‹€. λΆ€μ •ν™•ν•œ λ„ˆλΉ„ 속성이 μžˆμ–΄λ„ Chromeκ³Ό Safari λͺ¨λ‘μ—μ„œμ²˜λŸΌ μΈμ‡„λ©λ‹ˆλ‹€.

    var deferred = $q.defer();

    element.find('svg').attr('width', '100px');

    html2canvas(element, {
        background: '#eee',
        onrendered: function(canvas) {
            var a = document.createElement('a');
            a.href = canvas.toDataURL('image/jpeg', 1).replace('image/jpeg', 'image/octet-stream');
            a.download = fileName + '.jpg';
            a.click();
            deferred.resolve();
        }
    });

    return deferred.promise;

νŽΈμ§‘: μΆ”κ°€ν•  λ‚΄μš© 쀑 관련이 μ—†μ§€λ§Œ μ—¬κΈ°μ—μ„œ 검색할 λ•Œ λ‹€λ₯Έ μ‚¬λžŒλ“€μ΄ μœ μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€. FirefoxλŠ” μœ„μ˜ λ°©λ²•μœΌλ‘œ μž‘λ™ν•˜μ§€ μ•ŠλŠ” 것 κ°™μŠ΅λ‹ˆλ‹€. λ‚΄ SVGμ—λŠ” 16μ§„μˆ˜ 색상에 λŒ€ν•œ # κΈ°ν˜Έκ°€ μžˆμŠ΅λ‹ˆλ‹€(예: #ccc). 이듀은 URL에 μ˜ˆμ•½λœ 문자이고 FirefoxλŠ” 이에 λŒ€ν•΄ μ—„κ²©ν•˜κΈ° λ•Œλ¬Έμ— SVGκ°€ λ‚˜νƒ€λ‚˜μ§€ μ•Šμ•˜μŠ΅λ‹ˆλ‹€. λŒ€μ‹  rgb κ°’μœΌλ‘œ κ΅μ²΄ν–ˆλŠ”λ° 이제 Firefoxκ°€ μ˜¬λ°”λ₯΄κ²Œ ν‘œμ‹œλ©λ‹ˆλ‹€.

@jgunderson-IAS κ°μ‚¬ν•©λ‹ˆλ‹€. λΉ λ₯Έ ν•΄κ²° λ°©λ²•μœΌλ‘œ μ‹œλ„ν•΄ λ³΄κ² μŠ΅λ‹ˆλ‹€.

이 버그λ₯Ό μ‚΄νŽ΄λ³΄λŠ” 데 ν•˜λ£¨λ₯Ό 보낼 수 μžˆλŠ” κΈ°νšŒκ°€ 있기λ₯Ό λ°”λžλ‹ˆλ‹€. κΈ€μŽ„μš”. λ°˜λ‚˜μ ˆμ€ 이 버그λ₯Ό μ‚¬μš©ν•˜κ³  λ°˜λ‚˜μ ˆμ€ μ‚¬μš©ν•  수 μžˆμ§€λ§Œ μ‹€μ œ μ†”λ£¨μ…˜.

@niklasvh 당신이 λ³΄μ•˜λŠ”μ§€ λ˜λŠ” μˆ˜μ •μ„ κ΅¬ν˜„ν•˜λŠ” μ΅œμ„ μ˜ 방법에 λŒ€ν•œ μ œμ•ˆμ΄ μžˆλŠ”μ§€ ν™•μ‹€ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€(μ°Έμ‘°: https://github.com/niklasvh/html2canvas/issues/846#issuecomment-229035694 )

@jgunderson-IAS μ €λŠ” SVG의 크기λ₯Ό λͺ…μ‹œμ μœΌλ‘œ μ„€μ •ν•΄ μ™”μœΌλ©° 이 ν•΄ν‚€ν•œ μ ‘κ·Ό 방식은 λ Œλ”λ§λ¨μ„ μ˜λ―Έν•˜μ§€λ§Œ 크기가 μΌμΉ˜ν•˜μ§€ μ•ŠλŠ” κ²ƒμ²˜λŸΌ λ³΄μž…λ‹ˆλ‹€. 높이와 무게 속성을 λͺ¨λ‘ μ„€μ •ν•˜κ³  μžˆμ§€λ§Œ κ·œμΉ™μ μœΌλ‘œ 'λˆŒλŸ¬μ§„' κ²ƒμ²˜λŸΌ λ³΄μž…λ‹ˆλ‹€. '. λΆˆν–‰νžˆλ„ λ‚΄ νŽ˜μ΄μ§€λŠ” CSS에 μ˜ν•΄ μ œμ–΄λ˜κ³  μ»¨ν…Œμ΄λ„ˆμ˜ 100%인 svg 크기에 μ˜μ‘΄ν•˜λ―€λ‘œ 이것이 λ””λ”€λŒμ΄μ§€λ§Œ 크기λ₯Ό μ˜¬λ°”λ₯΄κ²Œ κ³„μ‚°ν•˜λ €λ©΄ 라이브러리λ₯Ό λ‹€μ‹œ μ½”λ”©ν•˜λŠ” 방법을 μ‚΄νŽ΄λ΄μ•Ό ν•©λ‹ˆλ‹€.

λ‹€μŒμ€ λΆ€λͺ¨ μš”μ†Œ λ„ˆλΉ„λ₯Ό 기반으둜 ν•˜λŠ” 'onClone' 이벀트의 λ„ˆλΉ„λ₯Ό μ„€μ •ν•˜κ³  μžˆμœΌλ―€λ‘œ svgsκ°€ λ Œλ”λ§λ˜λŠ” λ°©λ²•μ˜ μ˜ˆμž…λ‹ˆλ‹€(λͺ¨λ“  svgsλŠ” cssμ—μ„œ λ„ˆλΉ„ 100%둜 섀정됨). λ†’μ΄λŠ” 더 엉망인 것 κ°™μŠ΅λ‹ˆλ‹€.

HTML

image

μΊ”λ²„μŠ€

image

λ‚˜λŠ” μ‚¬μš©ν•˜κ³ μžˆλ‹€;

onclone: function(doc){
    var w,h;
    var svgs = doc.querySelectorAll('svg');
    for ( var s = 0; s < svgs.length; ++s ) {
        w = svgs[s].parentElement.offsetWidth;
        svgs[s].setAttribute('width', w );
    }
}

μ’…νš‘λΉ„λ₯Ό μ–Όλ§ˆλ‚˜ 잘 λ Œλ”λ§ν•˜λŠ”μ§€μ— κ΄€ν•΄μ„œλŠ” svg μžμ²΄μ— μ‹€μ œλ‘œ μ˜μ‘΄ν•˜λŠ” 것 κ°™μŠ΅λ‹ˆλ‹€. 예λ₯Ό λ“€μ–΄ 첫 번째(잎) svgλŠ” λ‹€λ₯Έ 두 κ°œλ³΄λ‹€ 훨씬 많이 찌그러져 μžˆμŠ΅λ‹ˆλ‹€.

λΆˆν–‰νžˆλ„ html2canvas μ‚¬μš©μ„ ν¬κΈ°ν•˜κ³  svgsλ₯Ό μ •ν™•ν•˜κ²Œ λ Œλ”λ§ν•  수 μ—†κΈ° λ•Œλ¬Έμ— λŒ€μ‹  μ„œλ²„ μΈ‘ μ†”λ£¨μ…˜( wkhtmltoimage )을 μ‚¬μš©ν•΄μ•Ό ν–ˆμŠ΅λ‹ˆλ‹€. getBoundingClientRect λ˜λŠ” getBBox 등을 μ‚¬μš©ν•˜μ—¬ μž‘λ™ν•˜μ§€ λͺ»ν–ˆμŠ΅λ‹ˆλ‹€.

1.0.0μ—μ„œ μˆ˜μ •λ¨

이 νŽ˜μ΄μ§€κ°€ 도움이 λ˜μ—ˆλ‚˜μš”?
0 / 5 - 0 λ“±κΈ‰