javascript의 window.print()는 인쇄창(프린터 선택하는 화면)을 여는 기능외에 다른 커스터마이징이 불가능합니다. 인쇄를 하지 않고, 창을 닫았을 때, 처리 방법이 있으면 좋은데..
activeX로 해야할 것 같습니다. activeX로는 scriptX를 이용해 볼만 한데... advanced 기능은 유료로 구매한 경우에만 가능해서 그렇게 추천할 수는 없군요..
다만, scriptX의 기본 기능(무료)중에, 인쇄창을 열었는데... 고객이 인쇄를 하지 않고, 인쇄창을 닫아버리면 return value로 false를 돌려주는 기능이 있습니다.
페이지에서 인쇄창을 열고, 만약 return값이 false면 "인쇄안함"으로 다시 처리하고, true이면 "인쇄됨" 처리하면 100%는 아니지만, 근접한 결과를 얻을 수 있을 것입니다. (각종 프린터 오류가 있어 프린트가 안된 경우는 print에서 결과값을 return 받아야 하는데.. 그러려면, 유료기능을 사용해야 할 듯합니다)
아래에서는 printresult.asp?result=0(실패시) printresult.asp?result=1(성공시)로 처리했는데, 이를 통한 db 작업은 잘 알아서 하시면 되겠습니다..
참고로 scriptx의 기본기능(무료)를 이용하면 프린트 결과물의 header footer 위/아래/좌/우 여백 가로/세로출력 등을 설정할 수 있습니다.
참고 소스는
<OBJECT id="factory" style="DISPLAY: none"
codeBase="http://www.meadroid.com/scriptx/smsx.cab#Version=6,2,433,14"
classid="clsid:1663ed61-23eb-11d2-b92f-008048fdd814" viewastext>
</OBJECT>
<script>
function printPage(){
factory.printing.header = ""; //머릿말 설정
factory.printing.footer = ""; //꼬릿말 설정
factory.printing.portrait = true; //출력방향 설정: true-가로, false-세로
factory.printing.leftMargin = 1.0; //왼쪽 여백 설정
factory.printing.topMargin = 1.0; //위쪽 여백 설정
factory.printing.rightMargin = 1.0; //오른쪽 여백 설정
factory.printing.bottomMargin = 1.0; //아래쪽 여백 설정
a = factory.printing.Print(true); //출력하기
if (!a) {
window.location.href="printresult.asp?result=0" // 인쇄없이 닫은 경우 처리url get방식
}
else {
window.location.href="printresult.asp?result=1" // 인쇄한 경우 처리url get방식
}
}
</script>
<body onload="printPage();">
인쇄할 내용
</body>