JavaScript

HTML 화면 스크린샷 찍기 (html2canvas)

citron031 2023. 5. 4. 22:53

사용자의 브라우저에 보이는 HTML을 스크린샷 찍을 수 있는 방법을 기록하기로 하였다.

html2canvas 라는 라이브러리를 사용하여 이를 간단히 구현할 수 있다.

 

npm install html2canvas

 

함수를 작성하여 기능을 구현해보자면 다음과 같이 작성할 수 있다.

 

import html2canvas from 'html2canvas'

...

const copyElement = () => {
    const root = document.querySelector('#copy-image-div') as HTMLElement
    if (root) {
      html2canvas(root, { allowTaint: true }).then((canvas) => {
        document.querySelector('#copy-root')?.appendChild(canvas)
      })
    }
  }

 

document.querySelector로 이미지 태그를 자식 노드로 가지는 div를 가져와 이를 copy-root라는 id를 가지는 div의 하위에 추가하는 함수이다.

다만, 아무런 옵션 없이 사용했을 때 이 라이브러리는 이미지를 노출시키지 않는데, 기본 옵션으로 cross-origin를 허용하지 않기 때문이다.

cross-origin 이미지를 사용한다면, 두 번째 인자로 옵션을 주어 allowTaint를 true로 설정해준다.

복사하기 위해서 선택한 요소가 canvas로 변환되어 이를 사용할 수 있게 해주는 라이브러리인 html2canvas였다.

 

 

 

공식 문서

https://html2canvas.hertzen.com/

 

html2canvas - Screenshots with JavaScript

Try out html2canvas Test out html2canvas by rendering the viewport from the current page. Capture

html2canvas.hertzen.com