Googleμ SVGμ λν "offsetWidth" μ§μμ κ±°λΆνμ΅λλ€.
μμ΄λμ΄κ° μμ΅λκΉ?
λ¬Έμ: https://www.chromestatus.com/features/5724912467574784
μ΄κ²μ μ¬λ¦¬λ €κ³ νλ κ²μ λλ€! μ΄λ² λ¬μ μλμ΄ μ€μ§λ κ²μ΄ μ½κ° μ°λ €λ©λλ€.
μ, λΆλͺ ν 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 :) λ€λ₯Έ λΌμ΄λΈλ¬λ¦¬λ₯Ό μ¬μ©νμ¬ λ¬Έμ λ₯Ό ν΄κ²°νμ΅λλ€...
With this, I can convert SVG to Canvas, and them, export fine...
2016-07-21 20:36 GMT+02:00 atdiff notifications@github.com:
@chemitaxis https://github.com/chemitaxis any progress on this? I'm
hoping to test the code out on a project I'm doing to see if it solves all
of my SVG problems especially with IE.β
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/niklasvh/html2canvas/issues/846#issuecomment-234343779,
or mute the thread
https://github.com/notifications/unsubscribe-auth/ABWseVDGMW_cSyV_ZMDkkUilXC5mK_Mrks5qX7wcgaJpZM4IDr12
.
λ°λΌμ @chemitaxis κ° μ΄ λ¬Έμ λ₯Ό ν΄κ²°νμ§ μκ³ λ μ΄μ html2canvasλ₯Ό μ¬μ©νμ§ μλ ν΄κ²° λ°©λ²μ μ°Ύμμ΅λκΉ?
μ, λ―Ήμ±μ μ¬μ©νκ³ μμ΅λλ€... νμ§λ§ μμ ν ν΅ν©νμ΅λλ€. ν΅ν©μ μν΄ λ¦¬ν©ν λ§μ ν΄μΌ νκ³ pull requestλ₯Ό ν΄μΌ ν©λλ€... νμ§λ§ μκ°μ΄ μμ΅λλ€... μ£μ‘ν©λλ€. μ΅λν 빨리 μμ λ₯Ό μ λ‘λνκ² μ΅λλ€. μ΅μμ.
κ·Έκ²μ κ±°μ μμ μ¬νμ΄ μλλλ€ ... λ€λ₯Έ λΌμ΄λΈλ¬λ¦¬λ₯Ό μ¬μ©νμ¬ μ΄μ κ°μ λ¬Έμ λ₯Ό ν΄κ²°ν νμλ μμ΅λλ€. SVGλ μλͺ» λ°°μΉλμ΄ μμΌλ©° μ¬λ°λ₯Έ μμΉλ₯Ό κ³μ°νκΈ°λ§ νλ©΄ λ©λλ€.
λꡬλ μ§ μ€μ λ‘ μ΄κ²μ λν μμ μ¬νμ μ°Ύμμ΅λκΉ? SVGλ λ μ΄μ λ λλ§λμ§ μλ κ² κ°μ΅λλ€.
μμ μ μλμ§λ§ μμ ν΄κ²° λ°©λ²μ μ°Ύμμ΅λλ€. λν 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%λ‘ μ€μ λ¨). λμ΄λ λ μλ§μΈ κ² κ°μ΅λλ€.
λλ μ¬μ©νκ³ μλ€;
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μμ μμ λ¨
κ°μ₯ μ μ©ν λκΈ
ν΄κ²°νμ΅λλ€... ν΄κ²°λλ©΄ μ΄λ²μ£Όλ§μ μΆκ°νκ² μ΅λλ€
μκ°μ΄. λ¦μ΄μ μ£μ‘ν©λλ€... FF, Safari λ° Chromeμμ μλν©λλ€.
μ΅μμ.
2016λ 6μ 29μΌ μμμΌ 19:00μ Yuki K [email protected]μ΄ λ€μκ³Ό κ°μ΄ μΌμ΅λλ€.