컴퓨터 이야기/프로그래밍

기본적인 자바 스크립트로 웹브라우저를 통하여 인쇄하는 방법

래빗 크리스 2010. 3. 18. 14:07

인쇄할 영역을 선정한 다음, doPrint.jsp 를 호출하여 인쇄.
window.open 이 아니라 iframe 안에 집어 넣고 window.print 인쇄하려 했는데,
window 를 print 하는 것이기 때문에 iframe 외부의 내용도 인쇄되어 문제.
post 방법으로 window 를 open 하기 위해 URL 을 주지 않고 먼저 오픈한 다음 submit 하였음.
인쇄용 CSS 가 있다면 파라미터로 넘겨 주든지 doPrint.jsp 에 기술.
웹브라우저에 따라 헤어와 푸터 부분에 예기치 않은 문자열이 인쇄될 수 있으므로 유의.
파라미터 방식이 아니라 opener 개체를 이용하여 해당 값을 가져올 수 있다.
이 경우에는 doPrint.jsp 의 window.print() 함수가 호출되기 전에
인쇄 내용을 document.write() 한다.

 

인쇄하는 쪽에서는 아래와 같은 코드 체계를 유지.

 ...

<form name="frmBasic" method="post">

<input type="hidden" name="printObject">

<input type="hidden" name="cssFilespec">

 ...

<div id="id4Print" >이곳에 필요한 내용을 집어 넣는다</div>

 ...

</form>

 ...


<script>
<!--

function goPrint(){

    var o = window.open('','targetChild','width=800,height=600');             // id4Print 에 담기는 내용에 맞게 사이즈 조정

    var f = document.forms['frmBasic'];

    f.action = '/kr/common/doPrint.jsp';

    f.cssFilespec.value = '/kr/SkyAdm/common/resno/defaultCss.jsp';     // 인쇄용 CSS 적용

    f.printObject.value = document.getElementById('id4Print').innerHTML; // 인쇄할 곳

    f.target = 'targetChild';

    f.submit();

}

< /script >




<%--
  * 프로그램 명칭 : doPrint.jsp
  * 프로그램 설명 : 인쇄
  * 작업일/작업자 : 100318 OOO, 최초 설치
--%>
<%
 String  printObject = request.getParameter("printObject");       // 이런 부분은 상황에 맞게 조정
 String  cssFilespec = request.getParameter("cssFilespec");   // 이런 부분은 상황에 맞게 조정
 if(printObject==null || cssFilespec==null) return;
%>
<html>
<head>
<title>인쇄</title>
<jsp:include page="<%= cssFilespec %>" flush="true" />
<script>
<!--
function doPirntMe(){
 window.print();
}
//-->
</script>
</head>
<body leftMargin="0" topMargin="0" onLoad="doPirntMe()">
<div style="width:800px" id="printObject"><%= printObject %></div>
</body>
</html>