인쇄할 영역을 선정한 다음, 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>
'컴퓨터 이야기 > 프로그래밍' 카테고리의 다른 글
JQuery Masonry 레이아웃 (0) | 2010.04.27 |
---|---|
ul ol li 정리 (6) | 2010.03.22 |
영역, 좌표, 사이즈 관련 정리 (0) | 2010.03.15 |
WareValley 사의 Orange 4.0.1 버전인데, SQL Tool 의 Edit Mode 에서 Accept Current Record 해도 Commit 은 따로 해 주어야 하는군요.. (1) | 2010.03.03 |
Ajax 를 유사하게 여러번 호출하는 경우 소스 단순하게 만들기 (2) | 2010.02.22 |