[Javascript] 브라우져 화면 캡쳐 라이브러리(html2canvas)


Open source/Javascript, Jquery, CSS  2019. 11. 22. 19:57

안녕하세요. 명월입니다.


이 글은 Javascript에서 브라우져 화면 캡쳐 라이브러리(html2canvas)에 대한 설명입니다.


웹 프로그램을 만들어서 서비스를 할 때, 예상치 못한 버그를 만날 때가 있습니다. 그 때마다 유저가 어떤 방식으로 조작을 하다가 에러가 발생했다고 피드백을 받는 경우가 많은데 아무래도 화면 캡쳐까지 이루어지지 않을 경우 버그를 찾기 힘들때가 있습니다.

그 때, 이 캡쳐 라이브러리를 통해서 브라우저 상태를 캡쳐해서 서버로 전송을 하게 되면 많이 유용하게 사용할 듯 싶습니다.

링크 - https://html2canvas.hertzen.com

<!DOCTYPE html>
<html>
<head>
  <meta name="viewport" content="width=device-width,initial-scale=1.0,minimum-scale=1.0,maximum-scale=1.0,user-scalable=no">
  <title>title</title>
  <script src="https://code.jquery.com/jquery-3.4.1.min.js"></script>
	<!-- 화면 캡쳐 CDN -->
  <script src="https://html2canvas.hertzen.com/dist/html2canvas.min.js"></script>
</head>
<body>
<button id="shot">screen shot</button>
<!-- 캡쳐할 영역 -->
<div id="capture" style="padding: 10px; background: #f5da55">
  <h4 style="color: #000; ">Hello world!</h4>
</div>
<script>
  $(function(){
    $("#shot").on("click", function(){
			// 캡쳐 라이브러리를 통해서 canvas 오브젝트를 받고 이미지 파일로 리턴한다.
      html2canvas(document.querySelector("#capture")).then(canvas => {
				saveAs(canvas.toDataURL('image/png'),"capture-test.png");
			});
    });
    function saveAs(uri, filename) { 
			// 캡쳐된 파일을 이미지 파일로 내보낸다.
      var link = document.createElement('a'); 
      if (typeof link.download === 'string') { 
        link.href = uri; 
        link.download = filename; 
        document.body.appendChild(link); 
        link.click(); 
        document.body.removeChild(link); 
      } else { 
        window.open(uri); 
      } 
    }
  });
</script>
</body>
</html>

예제

여기까지 Javascript에서 브라우져 화면 캡쳐 라이브러리(html2canvas)에 관한 설명이었습니다.


궁금한 점이나 잘못된 점이 있으면 댓글 부탁드립니다.