특정 영역을 프린트 하기

브라우저의 전체 페이지가 아닌 특정 영역만을 프린트하고 싶을때 사용되는 방법으로 특정 영역을 복사하여 팝업으로 띄운 다음 프린트 하는 것이다.

/** 프린트 버튼 클릭 시 이벤트 */
$("#print").click(function () {
    let $container = $("#container").clone()    // 프린트 할 특정 영역 복사
    let cssText = ""                            // 스타일 복사
    for (const node of $("style")) {
        cssText += node.innerHTML
    }
    /** 팝업 */
    let innerHtml = $container[0].innerHTML
    let popupWindow = window.open("", "_blank", "width=700,height=800")
    popupWindow.document.write("<!DOCTYPE html>"+
      "<html>"+
        "<head>"+
        "<style>"+cssText+"</style>"+
        "</head>"+
        "<body>"+innerHtml+"</body>"+
      "</html>")
   
    popupWindow.document.close()
    popupWindow.focus()

    /** 1초 지연 */
    setTimeout(() => {
        popupWindow.print()         // 팝업의 프린트 도구 시작
        popupWindow.close()         // 프린트 도구 닫혔을 경우 팝업 닫기
    }, 1000)
})