인쇄 미리 보기 및 페이지 설정 버튼 만드는 방법

저자: Daniel Joe |  날짜: 2001년 11월 27일  


비록 인터넷 익스플로러에서만 동작하긴 하지만 브라우저의 "인쇄 미리 보기"와 "페이지 설정" 메뉴를 프로그래밍적으로 실행시킬 수 있는 방법이 있다. 우선 아래 버튼을 클릭한 후 어떤 결과가 나오는지 확인해 보기 바란다. (인터넷 익스플로러 4 이상에서 동작한다.)

      

위 예제와 같은 결과를 얻으려면 브라우저 컨트롤에 접근할 수 있어야 한다. 이제 실제 소스 코드를 보면서 분석해 보도록 하자.

<script language="javascript">
function ieExecWB( intOLEcmd, intOLEparam )
{
// 웹 브라우저 컨트롤 생성
var WebBrowser = '<OBJECT ID="WebBrowser1" WIDTH=0 HEIGHT=0 CLASSID="CLSID:8856F961-340A-11D0-A96B-00C04FD705A2"></OBJECT>';
 
// 웹 페이지에 객체 삽입
document.body.insertAdjacentHTML('beforeEnd', WebBrowser);
 
// if intOLEparam이 정의되어 있지 않으면 디폴트 값 설정
if ( ( ! intOLEparam ) || ( intOLEparam < -1 )  || (intOLEparam > 1 ) )
        intOLEparam = 1;
 
// ExexWB 메쏘드 실행
WebBrowser1.ExecWB( intOLEcmd, intOLEparam );
 
// 객체 해제
WebBrowser1.outerHTML = "";
}
 
</script>
 
<input type=button value="인쇄 미리 보기" onclick="window.ieExecWB(7)">  
<input type=button value="페이지 설정" onclick="window.ieExecWB(8)">  
<input type=button value="인쇄하기(대화상자 표시)" onclick="window.ieExecWB(6)">  
<input type=button value="인쇄 바로 하기" onclick="window.ieExecWB(6, -1)">

위의 소스 코드에서 웹 브라우저 컨트롤에 접근하기 위해 <object> 태그를 사용하였다. 이 때 웹 브라우저 컨트롤의 고유 클래스 ID인 "8856F961-340A-11D0-A96B-00C04FD705A2"를 사용하였다. ActiveX 프로그래밍을 해본 사람이라면 이게 무엇을 의미하는지 쉽게 알 수 있겠지만 잘 모르는 사람도 이 기능을 사용하는데는 큰 문제가 없다. 다만 궁금한 사람들은 레지스트리의 HKEY_CURRENT_USER의 CLSID 부분에서 {8856F961-340A-11D0-A96B-00C04FD705A2}을 찾아보기 바란다. 이렇게 레지스트리에 등록되어 있는 고유 ID를 <object> 태그를 통해 접근함으로써 해당 컨트롤의 기능을 이용할 수 있는 것이다.

웹 브라우저 컨트롤은 ExecWB란 메쏘드를 가지고 있다. 이 메쏘드를 통하여 브라우저 메뉴를 접근할 수가 있다. ExecWb 메쏘드의 파라미터로 intOLEcmd와 intOLEparam을 사용하는데 intOLEcmd가 7이면 인쇄 미리 보기, 8이면 페이지 설정, 6이면 인쇄하기이다. 인쇄하기 경우 intOLEparam이 -1이면 대화 상자 없이 바로 인쇄를 한다. 여기서 ExecWB 메쏘드는 WebBrowser1을 통해 접근하였는데 이는 <object> 태그 안에서 웹 브라우저 컨트롤에 대한 이름으로 WebBrowser1을 사용했기 때문이다. 이 이름은 사용자가 임의로 지정해 주면 된다.

만일 인쇄하기와 관련된 전형적인 방법을 알고 싶은 사람은 다음 글을 참조 하기 바란다.

이 외에도 브라우저의 메뉴를 실행시킬 수 있는 방법으로 execCommand 메쏘드가 있는데 이와 관련된 글을 읽고 싶다면 다음 글을 참조하기 바란다.


TAGS.

Comments