Computer >> 컴퓨터 >  >> 프로그래밍 >> JavaScript

JavaScript로 클릭 한 번에 인쇄·PDF 저장 창을 띄우는 버튼 만들기

버튼을 클릭하면 브라우저의 인쇄 또는 파일 저장 창이 바로 열리도록 만드는 방법을 알아봅니다.

웹사이트의 페이지를 인쇄하거나 저장하고 싶다면 보통 브라우저 메뉴(대체로 화면 왼쪽 상단)를 이용합니다.

  • 파일(File) → 인쇄(Print)를 차례로 클릭한 뒤, Save(저장) 버튼을 눌러 PDF 문서로 저장하거나 프린터로 바로 출력할 수 있습니다.
  • 인쇄/저장 단축키: cmd + P(Mac) / ctrl + P(Windows)

하지만 사용자가 매번 브라우저 메뉴를 찾아 들어가게 하는 대신, 클릭 한 번으로 인쇄 창이 즉시 열리는 '인쇄·저장' 버튼을 페이지에 직접 제공하면 어떨까요? 훨씬 더 편리한 사용자 경험을 만들 수 있습니다.

생각보다 간단합니다. 먼저 적절한 클래스 이름을 가진 버튼부터 만들어 보겠습니다.

<button class="button-print-or-save-document">문서 인쇄 또는 저장</button>

모두가 읽기 쉬운 코드를 작성하세요!

클래스, 변수, 함수의 이름은 위 예제처럼 길더라도 명확하게 지어주는 것이 좋습니다. btn-pos-d처럼 짧게 축약된(암시적인) 이름은 나중에 아무도 알아보기 어렵습니다. 읽기 편한 코드가 결국 유지보수도 쉬운 코드입니다.

이제 JavaScript로 버튼에 실제 동작을 연결해 보겠습니다.

const buttonPrintOrSaveDocument = document.querySelector(
  ".button-print-or-save-document"
)

function printOrSave() {
  window.print()
}

buttonPrintOrSaveDocument.addEventListener("click", printOrSave)

완성입니다! 이 버튼 요소는 사용자에게 빠른 인쇄·문서 저장 기능을 제공하고 싶은 어떤 웹 페이지에서든 그대로 가져다 재사용할 수 있습니다.

코드 동작 원리

  • 먼저 button-print-or-save-document 클래스를 가진 버튼을 선택해, 그 참조를 const 변수(buttonPrintOrSaveDocument)에 저장합니다.
  • 그다음 호출될 때 window.print() 메서드를 실행하는 이름 있는 함수 선언 printOrSave()를 만듭니다.
  • 마지막으로 두 개의 인자를 받는 이벤트 리스너를 등록합니다. 첫 번째는 버튼 요소에서 발생하는 click 이벤트를 감지하는 역할이고, 두 번째는 해당 이벤트가 발생했을 때 호출할 printOrSave 함수입니다.

window.print()는 모든 주요 브라우저에서 지원되며, 열리는 대화상자에서 사용자는 프린터로 출력하거나 'PDF로 저장' 옵션을 선택해 파일로 내려받을 수 있습니다. 필요하다면 CSS의 @media print 규칙을 함께 활용하면 인쇄용 화면을 따로 디자인할 수도 있습니다.