Html2canvas: μžλ°” 슀크립트λ₯Ό μ‚¬μš©ν•˜μ—¬ Googleμ§€λ„μ˜ 슀크린 μƒ· 찍기

에 λ§Œλ“  2014λ…„ 12μ›” 13일  Β·  7μ½”λ©˜νŠΈ  Β·  좜처: niklasvh/html2canvas

μ•ˆλ…•ν•˜μ„Έμš”

λ‹€μŒ μ½”λ“œλ₯Ό μ‹œλ„ν–ˆμŠ΅λ‹ˆλ‹€ : this div "# map-canvas"contents google map.
$ ( '# map-canvas'). html2canvas ({
onrendered : function (canvas) {
var img = canvas.toDataURL ( "image / png");
window.open (img);
}
});
}

이 μ½”λ“œλ₯Ό μ‚¬μš©ν•˜λ©΄ λΉˆμ§€λ„κ°€ ν‘œμ‹œλ©λ‹ˆλ‹€.
Googleμ§€λ„μ˜ 좜λ ₯을 μ°ΎμœΌμ‹­μ‹œμ˜€.

이 문제λ₯Ό κ·Ήλ³΅ν•˜λŠ” 방법을 μ•Œλ €μ£Όμ‹­μ‹œμ˜€.

googlemapimageusinghtml2canvas

Question

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

μ˜΅μ…˜μ—μ„œ useCORS: true λ₯Ό μ „λ‹¬ν•˜λ©΄ λ¬Έμ œκ°€ ν•΄κ²°λ˜μ—ˆμŠ΅λ‹ˆλ‹€. λ˜ν•œ allowTaint: false . 이 κΈ°λŠ₯을 μ‹€ν–‰ν•˜λ©΄ 그것은 λͺ¨λ“  타일을 λ³Ό 수 μžˆμŠ΅λ‹ˆλ‹€ ν›„, 당신은듀을 수 μžˆμŠ΅λ‹ˆλ‹€ 도움이 될 것이닀 tilesloaded 및 μ‹€ν–‰ html2canvas 그런 일이 ν›„.

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

cors 헀더 와 ν•¨κ»˜ μ œκ³΅λ˜μ§€ μ•ŠλŠ” ν•œ λ‹€λ₯Έ μΆœμ²˜μ—μžˆλŠ” 이미지 (이 경우 Google지도 타일)λ₯Ό λ Œλ”λ§ ν•  수 μ—†μŠ΅λ‹ˆλ‹€. 이λ₯Ό 극볡 ν•  μˆ˜μžˆλŠ” ν•œ 가지 방법은 이미지에 ν”„λ‘μ‹œλ₯Ό μ‚¬μš©ν•˜λŠ” κ²ƒμž…λ‹ˆλ‹€.

PHP ν”„λ‘μ‹œ μ„œλ²„λ‘œ μ‹œλ„ν–ˆμ§€λ§Œ 였λ₯˜κ°€ λ°œμƒν–ˆμŠ΅λ‹ˆλ‹€. "Uncaught
SecurityError : 'HTMLCanvasElement'μ—μ„œ 'toDataURL'을 μ‹€ν–‰ν•˜μ§€ λͺ»ν–ˆμŠ΅λ‹ˆλ‹€.
μ˜€μ—Ό 된 μΊ”λ²„μŠ€λŠ” 내보낼 수 μ—†μŠ΅λ‹ˆλ‹€. "

이 ν”„λ‘μ‹œ μ„œλ²„λ₯Ό μ‹œλ„ν–ˆμŠ΅λ‹ˆλ‹€.
https://github.com/brcontainer/html2canvas-php-proxy ,
μœ„μ˜ ν”„λ‘μ‹œ μ„œλ²„μ—μ„œ Google지도 λ°©ν–₯을 μ‚¬μš©ν–ˆμŠ΅λ‹ˆλ‹€.
https://developers.google.com/maps/documentation/javascript/examples/directions-simple

2014 λ…„ 12 μ›” 13 일 ν† μš”μΌ μ˜€ν›„ 11:11, Niklas von Hertzen <
[email protected]> μž‘μ„± :

μ•„λž˜μ—μžˆλŠ” 이미지 (이 경우 Google지도 타일)λ₯Ό λ Œλ”λ§ ν•  수 μ—†μŠ΅λ‹ˆλ‹€.
cors 헀더와 ν•¨κ»˜ μ œκ³΅λ˜μ§€ μ•ŠλŠ” ν•œ λ‹€λ₯Έ 좜처
https://developer.mozilla.org/en-US/docs/Web/HTTP/Access_control_CORS.
이λ₯Ό 극볡 ν•  μˆ˜μžˆλŠ” ν•œ 가지 방법은 이미지에 ν”„λ‘μ‹œλ₯Ό μ‚¬μš©ν•˜λŠ” κ²ƒμž…λ‹ˆλ‹€.

β€”
이 이메일에 직접 λ‹΅μž₯ν•˜κ±°λ‚˜ GitHubμ—μ„œ ν™•μΈν•˜μ„Έμš”.
https://github.com/niklasvh/html2canvas/issues/485#issuecomment -66884354
.

_HARDIK SHAH_

λ‚˜λŠ” 같은 λ¬Έμ œμ— μ§λ©΄ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€. 이에 λŒ€ν•œ 해결책을 μ°Ύμ•˜μŠ΅λ‹ˆκΉŒ? html2canvasλ₯Ό μ‚¬μš©ν•˜μ—¬ Googleμ§€λ„μ˜ 슀크린 샷을 μ–»κ³  μ‹ΆμŠ΅λ‹ˆλ‹€. λ‹΅μž₯에 κ°μ‚¬λ“œλ¦½λ‹ˆλ‹€.

좩돌. μ—…λ°μ΄νŠΈκ°€ μžˆμŠ΅λ‹ˆκΉŒ?

μ˜΅μ…˜μ—μ„œ useCORS: true λ₯Ό μ „λ‹¬ν•˜λ©΄ λ¬Έμ œκ°€ ν•΄κ²°λ˜μ—ˆμŠ΅λ‹ˆλ‹€. λ˜ν•œ allowTaint: false . 이 κΈ°λŠ₯을 μ‹€ν–‰ν•˜λ©΄ 그것은 λͺ¨λ“  타일을 λ³Ό 수 μžˆμŠ΅λ‹ˆλ‹€ ν›„, 당신은듀을 수 μžˆμŠ΅λ‹ˆλ‹€ 도움이 될 것이닀 tilesloaded 및 μ‹€ν–‰ html2canvas 그런 일이 ν›„.

λ‚˜λŠ” 같은 λ¬Έμ œμ— μ§λ©΄ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€. 지도 μ˜΅μ…˜μ—μ„œ useCORS : true 및 allowTaint : falseλ₯Ό μ‚¬μš©ν•΄ λ³΄μ•˜μ§€λ§Œ λ„μ›€μ΄λ˜μ§€ μ•Šμ•˜μŠ΅λ‹ˆλ‹€. νŽ˜μ΄μ§€κ°€λ‘œλ“œ 된 후에 만 β€‹β€‹μŠ€ν¬λ¦° 샷을 μ–»μœΌλ €κ³ ν•©λ‹ˆλ‹€. λ‚΄κ°€ λ†“μΉœ 것이 μžˆμŠ΅λ‹ˆκΉŒ?

Googleμ§€λ„μ˜ 슀크린 샷을 찍을 λ•Œλ„ λ¬Έμ œκ°€ λ°œμƒν•©λ‹ˆλ‹€.이 였λ₯˜κ°€ λ°œμƒν•©λ‹ˆλ‹€.
ERROR Error: Uncaught (in promise): InvalidStateError: Failed to execute 'drawImage' on 'CanvasRenderingContext2D': The image argument is a canvas element with a width or height of 0. Error: Failed to execute 'drawImage' on 'CanvasRenderingContext2D': The image argument is a canvas element with a width or height of 0. at CanvasRenderer.<anonymous> (html2canvas.js:6289) at step (html2canvas.js:83) at Object.next (html2canvas.js:64) at fulfilled (html2canvas.js:54) at ZoneDelegate.invoke (zone-evergreen.js:365) at Object.onInvoke (core.js:39698) at ZoneDelegate.invoke (zone-evergreen.js:364) at Zone.run (zone-evergreen.js:124) at zone-evergreen.js:851 at ZoneDelegate.invokeTask (zone-evergreen.js:400) at resolvePromise (zone-evergreen.js:793) at resolvePromise (zone-evergreen.js:752) at zone-evergreen.js:854 at ZoneDelegate.invokeTask (zone-evergreen.js:400) at Object.onInvokeTask (core.js:39679) at ZoneDelegate.invokeTask (zone-evergreen.js:399) at Zone.runTask (zone-evergreen.js:168) at drainMicroTaskQueue (zone-evergreen.js:570) at invokeTask (zone-evergreen.js:485) at ZoneTask.invoke (zone-evergreen.js:470)

제발, 이것은 맀우 μ€‘μš”ν•©λ‹ˆλ‹€.

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