오늘은 script로 간편하게 pdf 다운로드 및 출력을 할 수 있는 window.print() 함수를 소개해보려고 한다.
pdf 보고서 출력같은 경우 서버단에서 별도의 모듈을 통해 가공해서 클라이언트에 던져주는 것이 일반적이다.
그러나 연산처리 등 별도의 가공 없이 화면 상의 정보만으로 간단하게 문서를 생성하고 싶은 경우, script 함수 단 한 줄만으로 브라우저에서 웹문서를 pdf 다운로드, 출력 할 수 있다.
브라우저에서 windows에서 ctrl + p 또는 mac에서 ⌘ + p를 눌렀을 때 뜨는 출력 모달을 띄우도록 제어해주는 것이다.
익스에서는 테스트 안 해봤는데... 뭐... 22년 6월에 종료되니까...(그날이 어서 오길🙏)
사용법은 아주 간단하다!
window.onbeforeprint() : 프린트 실행 전에 실행되는 함수
1
2
3
4
5
6
7
8
|
window.onbeforeprint = function () {
// 프린트 할 영역 필터링
$(".printBlock").css("display", "none");
$(".printInlineBlock").css("display", "none");
$(".printFloat").css("float", "left");
$(".forumFooterArea").css("display", "none");
};
|
cs |
여기에서 나는 header, footer 처럼 보고서에서 필요없는 부분을 display: none 처리 해주었다.
그 외에도 문서의 제목을 달아준다거나, 출력할 문서 서식 부분 컴포넌트를 hidden 시켜두었다가 여기에서 show 하는 등 화면 상에서의 가공을 수행하면 된다.
window.print() : 프린트 실행 함수
1
2
3
|
function onclickPrint() {
window.print();
}
|
cs |
출력 버튼 클릭 이벤트로 해당 함수를 걸어주고,
window.onafterprint() : 프린트 실행 후 실행되는 함수
1
2
3
4
5
6
7
|
window.onafterprint = function () {
// 초기 body 복구
$(".printBlock").css("display", "block");
$(".printInlineBlock").css("display", "inline-block");
$(".printFloat").css("float", "right");
$(".forumFooterArea").css("display", "block");
};
|
cs |
출력 모달을 닫은 후 실행되는 영역에는 아까전에 onbeforeprint 에서 숨김처리 했던 부분을 초기 상태로 복구해주었다.
함수명과는 다르게(?) 사용자가 실제 출력을 하지 않아도, 모달을 닫을 때 실행되는 콜백함수이기 때문에 안 먹힐 염려는 하지 않아도 좋다.
이렇게 아주 간단하게 웹문서로 pdf 다운로드를 구현해보았다.
참고한 글 : https://developer.mozilla.org/en-US/docs/Web/API/Window/print
'Programming > JavaScript' 카테고리의 다른 글
[Javascript] DOM control 관련 자주 사용하는 문법들 (0) | 2021.06.06 |
---|---|
[Javascript] 내장 함수(inner function)를 활용한 동적인 DOM 구현 (0) | 2019.09.02 |
React App 환경셋팅 및 개념 (0) | 2019.07.15 |
Node.js로 Angular6 구축하기 (0) | 2019.05.04 |
[jQuery] form 처리하는 방법 .submit() event (0) | 2018.12.05 |