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>

2007/11/22 14:58 2007/11/22 14:58

form 태그를 사용하면 form이 종료되는 시점에서 공백이 발생하지요.
*이젠 더이상 Table 태그 사이에 끼워넣지 하지 말아요
<style>
form { display : inline; }
</style>


이런게 있었다니 지금까지도 몰랐네...

2007/11/22 14:58 2007/11/22 14:58
<form name="bodyForm">
   <input type="file" name="fl" style="display:none">
   <input type="text" name="fileName"><img src="fileSearch.gif" onclick="document.bodyForm.fl.click()">
  </form> 
2007/11/22 14:57 2007/11/22 14:57

<form name="frm8" method="post" action="someFile.jsp">
<input type="text" name="myCtrl">
</form>

위와 같이 form tag 안에 element가 한개만 있을경우, "myCtrl"에서 enter를 눌렀을때 화면이 refresh가 된다.
이것을 막기 위해 아래와 같이 <input type="text" style="width:0; visibility:hidden;">를 추가해 주면 된다.

<form name="frm8" method="post" action="someFile.jsp">
<input type="text" name="myCtrl">
<input type="text" style="width:0; visibility:hidden;">
</form>


사실 꽁수다...

좋은 자료라서 올림..

2007/11/22 14:55 2007/11/22 14:55