v1.1.0.0 버전 적용시 인쇄할때마다 네이버PC그린에서 치료되지 않은 바이러스나 스파이웨어가 있습니다라는 메시지가 계속 나옵니다. cap이나 exe 파일 자체를 검사할때는 바이러스나 스파이웨어가 없는걸로 나오는걸로 봐서 파일자체가 실제 감염이 되어서 그런것 같지는 않습니다. 한번 확인을 부탁드립니다. 아참.. 프린터지정은 아주 잘 되네요^^
IEPageSetup에서 IE의 "인쇄 페이지 설정" 화면을 띄우고 닫을 때 윈도우 클래스명과 윈도우 메시지를 사용합니다.
네이버PC그린의 윈도우 클래스명과 "인쇄 페이지 설정" 화면의 윈도우 클래스명이 동일하여 IEPageSetup에서 네이버PC그린의 메인 화면을 닫는 명령을 보내게 되었습니다.
이로인해 네이버PC그린에서 자신을 종료시키려는 IEPageSetup을 바이러스 또는 스파이웨어로 진단한 것입니다.
이 문제와 관련된 코드는 수정하였으나 아직 배포는 하지 않았습니다.
좀 더 테스트해보고 오늘 밤 늦게 배포하겠습니다.
사용하신 스크립트 코드를 알려주시지 않으면 답변을 드릴 수가 없습니다.
남기신 정보만으로는 파악할 수 없습니다.
날코딩
2008/07/15 17:14
날씨가 너무 덥고 일에 능률도 많이 떨어지네요..
프린터 여백설정부분에서 임의의 값으로 설정후 프린트하고 나서는 다시 원래 디폴트값으로 다시 셋팅을 해야 되느데 이 부분에서 잘 안되네요.
IEPageSetupX.Print();
IEPageSetupX.SetDefault(); or IEPageSetupX.RollBack(); 이거 둘다 안 먹힙니다.
이렇게 하면 인쇄하고나서 디폴트값으로 셋팅을 해야 되는데 인쇄되기전 디폴트값으로 셋팅이 되고나서 출력이 됩니다.
제가 원하는건 설정한데로 인쇄한후 디폴트값으로 다시 셋팅입니다.
그럼.. 좋은 하루 되세요.
64bit 환경은 지원하지 않습니다.
여백과 머릿글, 바닥글 등을 직접 설정하시고, IE의 메뉴를 통하여 인쇄하세요..
자작 프로그램/IEPageSetup
웹페이지에서 인쇄시 머리글, 바닥글, 여백 제어 컨트롤 v1,4,0,3
Posted on 2003/11/28 01:09
웹페이지 즉, HTML에서 window.print();로 인쇄할 때 머리글, 바닥글을 제어하지 못해서 인쇄시 지저분하게 나오는 것을 방지할 수 있습니다.
각종 여백, 머리글, 바닥글을 설정할 수 있으며, 이전값으로 되돌리기, 기본값으로 초기화, 인쇄방향, 인쇄 용지 설정 등을 지원합니다.
링크 페이지를 참고 하세요..
속성:
------------------------------------------------------------------
header: 머리글 설정
footer: 바닥글 설정
leftMargin: 왼쪽 여백(단위: mm)
rightMargin: 오른쪽 여백(단위: mm)
topMargin: 위쪽 여백(단위: mm)
bottomMargin: 아래쪽 여백(단위: mm)
PrintBackground: 배경색 및 이미지 인쇄 여부 설정 ShrinkToFit: 크기에 맞게 축소 여부 설정(IE8만 지원)
Orientation: 인쇄방향 설정(1:가로, 0:세로) Printer: 인쇄 시 사용할 프린터 지정 PaperSize: 인쇄 용지 설정
메소드:
------------------------------------------------------------------
RollBack(): 수정 이전 값으로 되돌림(한 단계 이전만 지원)
Clear(): 여백은 0으로, 머리글/바닥글은 모두 제거 SetDefault(): 기본값으로 복원(여백 모두: 0.75mm, 머리글:&w&b페이지 &p / &P, 바닥글:&u&b&d)
Preview(): 미리보기 Print(confirm): 인쇄, confirm: true이면 인쇄대화상자 표시, 생략하거나 false이면 곧바로 인쇄 SetupPage(): 페이지 설정 창 띄우기
CloseIE(): 웹브라우즈 닫기 string GetPrinters(): 프린터 목록 구하기 string GetDefaultPrinter(): 기본 프린터 구하기
이벤트:
------------------------------------------------------------------ OnError(ErrCode, ErrMsg): 에러 발생 시 호출됨
v1,4,0,1부터는 상용 인증서를 이용하여 인증처리되지 않았습니다. 그 동안 인증서를 무료로 지원 해주었던 곳에서 올해는 인증서를 구입하지 않았네요. 무료로 배포하고 있는 상황에서 매년 18만원 정도의 금액을 들여서 상용 인증서를 구입하여 배포하기는 힘듭니다. 인증서를 가지고 계신 분은 다운로드한 후 직접 인증하여 사용하시기 바랍니다. 없는 분은 어쩔 수가 없네요.. 수동 설치 프로그램으로 설치하는 방법이나 인터넷 옵션에서 보안 수준을 낮추어 사용하거나 '신뢰할 수 있는 사이트'에 등록한 다음 사용하는 방법 외에는 없는 것 같네요 ㅠ.ㅠ 상용 인증서를 이용하여 인증시킨 파일을 저에게 보내주실 분을 찾습니다(isul at isulnara.com). 효과가 크진 않겠지만 이 컨트롤이 설치될 때 '게시자'로 표시되어 홍보가 되겠죠..
OBJECT 코드에서 아래 코드를 삭제하지 않고, 이 컨트롤 자체를 판매하지 않으며 또한 이 컨트롤을 사용하는 또 다른 ActiveX 컨트롤을 만들지 않는 조건으로 사용을 허가합니다 ^^
<param name="copyright" value="http://isulnara.com">
주의: 반드시 *.CAB 파일과 수동 설치파일을 다운로드하여 본인의 서버에 올려두고 사용하시기 바랍니다. 예제를 복사해서 사용하시면서 cab 파일의 경로를 제 서버에 있는 것으로 그대로 두고 사용할 경우 문제가 발생될 수 있습니다. 제 서버에 있는 파일은 항상 최신버전으로 업데이트되고 있어서 HTML의 OBJECT 코드에 있는 버전과 실제 제 서버에 존재하는 파일의 버전이 달라서 접속할 때마다 설치 관련 메시지가 표시됩니다.
v1.4.0.3
------------------------------------------------------------- +여백 설정하지 않았을 경우 " is not a vaild floating point value 에러 발생하던 문제 해결
v1.4.0.1
------------------------------------------------------------- +IE8에서 배경색 및 이미지 인쇄 안되는 문제 해결 +IE8에서 크기에 맞게 축소하는 ShrinkToFit 속성 추가
v1.3.0.2
------------------------------------------------------------- +1.3.0.0에서 발생한 오른쪽, 위 여백 뒤바뀌는 문제 해결
v1.3.0.0
------------------------------------------------------------- +기본 프린터 구하는 메소드 추가 +인쇄 방향 설정 후 인쇄 설정 창 띄울 경우 인쇄방향과 여백 일부 정상적으로 표시되지 않던 문제 해결 +프린터 설치되지 않은 컴퓨터에서 미리보기할 경우 발생하는 에러 제거
v1.1.0.1
------------------------------------------------------------- +네이버PC그린에서 바이러스/스파이웨어로 오진단되는 문제 해결
v1.1.0.0
------------------------------------------------------------- +Printer 속성 추가 +PaperSize 속성 추가 +GetPrinters() 메소드 추가 +OnError() 이벤트 추가
2008/02/11 추가사항 - 홍길동님의 팁
------------------------------------------------------------- 인쇄 또는 미리보기 시 점이 찍히는 문제 해결 방법: OBJECT 태그에 style="width:0;height:0" 추가
v1.0.20.4
------------------------------------------------------------- -OBJECT 코드를 동적으로 로딩할 경우 라이센스 관련 메시지 나오는 것 제거
v1.0.20.3
-------------------------------------------------------------
+프린터 설치되어 있지 않을 경우 IE 포커스 잃어 버리던 버그 해결
웹페이지에서 인쇄시 머리글, 바닥글, 여백 제어 컨트롤
http://isulnara.com/tt/index.php?pl=36&ct1=6
질문이
2004/12/03 21:06
출력할때 (가로) (세로)로 설정하는 속성은 없나요...
안지환
2004/12/08 17:54
가로/세로 출력부탁드립니다..
isul
2004/12/12 14:35
가로/세로 출력 기능은 좀 어려운데.. 한 번 시도해 보겠습니다.
BigS
2004/12/29 11:31
이슬님... 좋은 프로그램 공개해주셔서 감사드리구요. 하나 추가해주셨으면 하는게 있는데요. iframe 안에 있는 내용만 출력할 수 있도록 해주셨으면 하구요. 그럼 부탁드릴께요...
BigS
2004/12/30 10:51
IEPageSetupX.header = "";
IEPageSetupX.footer = "";
IEPageSetupX.PrintBackground = true;
//IEPageSetupX.Preview();
icert.focus();
icert.print();
임시로 이렇게 하기는 했습니다만.... Preview는 되질 않는군요. 프로뷰가 된다면 좋겠는데요.... 아니면 윗분말씀처럼 가로세로를 지정할 수 있다면 관계가 없게지만 가로세로 지정이 되지 않으면 사용자에게 확인을 하게 했으면 하거든요.
isul
2004/12/30 09:23
프레임 안에 있는 문서를 출력하기 위해서는 focus를 이동시킨 후에 인쇄하면 됩니다.
아래는 예제입니다.
<A href=# onclick="ifrm.focus();ifrm.print()">프레임 안에 있는 거 출력</a><BR>
<iframe src="./prn2.html" name=ifrm></iframe>
isul
2004/12/31 01:10
인쇄 방향은 제가 착각했네요..
바로 위에 있는 것이 정확합니다.
그리고, 프레임 미리보기는 안되네요..
인쇄기능은 인쇄 대화상자 옵션에서 "화면에 보이는 대로"/"선택한 프레임만" 등 이렇게 프레임을 선택하여 인쇄할 수 있도록 지원이 되는데 미리보기는 지원되지 않네요..
특정 프레임을 로컬에 저장시키거나 메모리에 올려서 그걸 인쇄되게 할 수도 있겠지만... 링크 경로 문제도 있고 해서 지원하기가 힘들 것 같습니다.
프레임으로 처리하지 말고, 새창으로 띄운다던가 하는 방법으로 하셔야 될 것 같습니다.
isul
2004/12/30 11:19
Preview 기능도 수정해서 잘 동작될 것입니다.
isul
2004/12/31 00:18
드뎌 인쇄 방향 설정 기능 추가했습니다.
Orientation 속성을 설정하심 됩니다.
IEPageSetupX.Orientation = 1; // 세로
IEPageSetupX.Orientation = IEPageSetupX.Portrait; // 세로
IEPageSetupX.Orientation = 0; // 가로
IEPageSetupX.Orientation = IEPageSetupX.Landscape; // 가로
BigS
2004/12/30 13:15
이슬님!! 가로세로는 잘되는군요. 근데 코멘트가 틀린것 같다는.... 1; // 세로 0; // 가로 인것 같은데요... (내가 틀렸나?) 어쨋든 그건 그렇구요. 프리뷰는 안되는데요? 프리뷰하면 iframe에 있는것만 되는게 아니고 전체페이지가 다 프리뷰 됩니다. ActiveX도 다시 받아서 올렸는데, 잘안되네요. 확인 한번 부탁드리구요. 혹시 소스가 있으시다면 부탁드릴께요...
BigS
2004/12/31 09:21
감사합니다. 잘사용하겠습니다.^^ 오늘 부산에 첫눈이 왔네요... 행복한 하루 되세요.
EverRich
2005/04/29 18:21
안녕하십니까?
좋은 프로그램 감사하게 쓰고 있습니다..
저도 프로그램을 만들다 만들다 포기 하고
이것을 쓰고 있는데, 혹 힌트를 좀 주실 수 없는지요..
소스를 요구하기는 그렇고, 만드는 힌트를 조금만
주시면 안되겠습니까?
aceseol@korea.com
isul
2005/04/30 21:33
안녕하세요..
시도해 보셨다니 아실지도 모르겠네요.. IE 관련 설정 사항은 모두 레지스트리에 저장됩니다.
레지스트리값만 적당히 수정해 주도록 만들면 되겠지요..
EverRich
2005/04/30 23:27
예를 들면 인쇄방향 레지스트리 부분
HKEY_CURRENT_USERSoftwaremicrosoftinternet explorerpagesetuporientation
에 값을 0,1 을 바꾸어도 인쇄는 세로로만 되고,
페이지설정이나 미리보기도 세로로만 나옵니다....
isul
2005/05/01 08:13
인쇄 방향의 경우 저도 고생 좀 했죠..
인쇄방향의 경우 레지스트리로 안됩니다.
인쇄 방향 설정은 프린터 설정이라서 여백 설정과는 다릅니다.
훅킹으로 시도해 보셔야 될겁니다. 눈에는 안 보이지만 직접 설정 창을 띄워서 설정하도록 말이죠^^
인쇄, 미리보기 기능도 마찬가집니다.
BigS
2005/05/03 15:27
이슬님... ActiveX가 설치되어 있는지 확인할 수 있나요? SP2 때문에 설치가 안되는 경우가 많아서 안내페이지를 만들려고 하는데요... 설치가 되어 있지 않다면 안내하고 설치되어 있다면 작업이 계속 진행 되도록 할려고 하거든요... 혹시 아시면 부탁드립니다.
isul
2005/05/03 17:22
/Bigs님
예제 클릭해보세요..
설치되지 않았을 경우 화면에 메시지 출력하는 것과 자바스크립트로 검사하는 예를 올려두었습니다.
자바스크립트로 검사는 Installed()라는 함수를 보시면 되고, 화면에 표시되는 것은 OBJECT 코드에서 보시면 됩니다.
BigS
2005/05/03 23:35
아!... 네... 예제에 있었는데도 불구하고... 죄송합니다. ^^
추가로 하나만 더 질문 드릴께요... freechal.com 처럼 설치되어 있지 않다면 수동설치도 가능한가요? 가능하다면 어떻게 해야 하는지도 부탁드려도 될런지요?
isul
2005/05/04 09:32
/BigS님
예제는 BigS님 요청에 따라 어제 수정했습니다^^
그리고 수동설치 예제도 오늘 적용했으니 확인해보세요..
이 페이지에 있는 수동설치 프로그램을 이용하세요..
질문요
2005/05/16 14:35
자바스크립트 에러가 뜨네요..
에러내용은 대략..
Line: 37
Char: 2
Error: " is not a vaild floating point value
Code : 0
그리고 소스는 다음과 같은데, IEPageSetupX.leftMargin 서부터 에러가 치네요..
그래서 parseFloat(10) 으로 묶어봤는데, 그래도 여전히 에러가치고..
아마 프로그램 자체의 문제가 아닐까 싶어 글을 남깁니다.
(총 5대의 PC 에서 테스트 해본결과 되는 컴터가 있고 안되는 컴터가 대략 3대정도
됐었습니다. OS 는 모두 window 2000 이구요, 익스버젼은 5.5 이상입니다.)
<SCRIPT LANGUAGE="JavaScript">
function ActiveX_print()
{
IEPageSetupX.header = ""; // 헤더설정
IEPageSetupX.footer = ""; // 푸터설정
IEPageSetupX.leftMargin = 10; // 왼쪽여백설정
IEPageSetupX.rightMargin = 10; // 오른쪽여백 설정
IEPageSetupX.topMargin = 4; // 윗쪽여백 설정
IEPageSetupX.bottomMargin = 10; // 아랫쪽 여백설정
IEPageSetupX.PrintBackground = true; // 배경색 및 이미지 인쇄
IEPageSetupX.Orientation = 1; // 가로 출력을 원하시면 0을 넣으면 됩니다. 세로출력은 1입니다.
IEPageSetupX.paper = "A4"; // 용지설정입니다.
// IEPageSetupX.Print(); // 인쇄하기
IEPageSetupX.Print(true); // 인쇄대화상자 띄우기
// PrintTest(); // 컨트롤설치여부 테스트
// IEPageSetupX.RollBack(); // 수정 이전 값으로 되돌림(한 단계 이전만 지원)
// IEPageSetupX.Clear(); // 여백은 0으로, 머리글/바닥글은 모두 제거, 배경색 및 이미지 인쇄 안함
// IEPageSetupX.SetDefault(); // 기본값으로 되돌림
// IEPageSetupX.SetDefault(); // 기본값으로 복원(여백 모두: 0.75mm, 머리글:&w&b페이지 &p / &P, 바닥글:&u&b&d, 배경색 및 이미지 인쇄: 안함)
// IEPageSetupX.Preview(); // 미리보기
// IEPageSetupX.SetupPage(); // 페이지설정창 띄우기
}
</SCRIPT>
isul
2005/05/17 00:45
/질문요
기본값이 없을 경우에 발생하는 에러 같습니다.
프로그램 수정해서 다시 올려두었으니 다시 테스트 바랍니다. 버전은 1,0,20,2입니다.
질문요
2005/05/17 17:28
예.. 테스트해보니 잘되네요.. 좋은프로그램 감사합니다..
그리고 위에서 에러쳤던 컴퓨터 몇대더 모아서 테스트 해봤는데, 간혹 다음과 같은
에러를 발생하는 컴퓨터도 있었습니다. 이게 익스플러문제인지는 아니면 컴포넌트 문제인지
좀더 많은 PC를 수집해서 체크해봐야겠는데요, 일딴 버그리포트 부터 올릴께요.
내용은 위와 동일하구요, 아참 그러고보니
<OBJECT id=IEPageSetupX classid="clsid:41C5BC45-1BE8-42C5-AD9F-495D6C8D7586" codebase="./IEPageSetupX.cab#version=1,0,20,2" width=0 height=0>
부분에서 ./IEPageSetupX.cab#version=1,0,20,1 가 ./IEPageSetupX.cab#version=1,0,20,2
로 바뀌었더군요.. ^^
여하튼, 테스트 해보니, Page setup 창이 두번뜨고 3번째로 인쇄대화창이 뜨더군요.
(IEPageSetupX.Print(true); <== 이옵션입니다.)
여하튼, 위의 오류부분에 대해서는 좀더 많은 PC를 수집해서 테스트해보고 버그리포트해드리
겠습니다.. 좋은프로그램 감사합니다. 수고하세요.
isul
2005/05/17 17:36
/질문요
버그리포트 고맙습니다..
IEPageSetupX.Print(true); 이 명령이 한 번만 호출되었는데 페이지 설정 창이 두 번 뜨고, 인쇄 대화창이 나온다는 것인가요?
버전은 1,0,20,2로 수정하셔야 하며, 컨트롤도 제 웹페이지에 있는 것을 링크해서 사용하지 않고 서버에 직접 올려서 했다면 어제 새로 바뀐 버전으로 다운로드 해서 올리신 후 테스트 해야 됩니다.
전에 발생한 에러가 발생하지 않았다니 이 부분은 제대로 된 거 같네요..
이 곳에 있는 [예제] 사이트에서 [ Print(true) 인쇄(인쇄 대화상자 표시) ]를 클릭했을 경우는 어떤지요??
isul
2005/05/17 17:39
/질문요
아.. 간혹 클릭 했는데 창이 아주 늦게 뜨는 경우가 있습니다.
여러 번 클륵하지 않았는지요?
한 번만 클릭하고 기다려보세요.. 그래서 두 번 뜨는지 확인바랍니다.
질문요
2005/05/17 21:49
예.. 한번 클릭했는데, Page Setup 창이 두번뜨고 마지막에 인쇄창이 뜨더군요..
좀더 많은 컴퓨터를 가지고 오류원인에대해 자세하게 분석해봐야 되는데, 시간이 없어서
세심하게 보질 못했네요.. 낼 다시 체크해봐야져...
여하튼, 확실히 그렇게 뜨는 컴터가 1대있습니다..
다른 컴퓨터를 가지고 체크해보고 다시 버그 Report 올릴께요.
수고하세요~
isul
2005/05/17 21:51
/질문요..
예.. 저도 여러 컴퓨터로 테스트를 해 보겠습니다.
다시 한 번 버그 리포트 감사드립니다.
수고하세요^^
BigS
2005/05/19 17:07
이슬님... 수동설치 파일 다시 만들어 주세요. 버젼이 안맞아서 설치해도 사용할 수 없네요.
그리고 추가로 혹시 ActiveX를 탐색기에서 말고 웹에서 자동언인스톨 할 수 있는 방법은 없나요? ^^
isul
2005/05/19 17:51
수동 설치 파일은 다시 만들어 드리겠습니다. 오늘 빠쁜 일이 있어 바로 만들어 드릴 순 없구요.. 이 주내에 만들어 드리죠..
그리고 ActiveX를 웹에서 제거할 수 있게 하려면 ActiveX 컨트롤을 약간 수정하면 되긴 합니다..
인쇄 완료된 후 자동 삭제되게 하려는 것인가요?
꼭 필요한 기능이라면 추가하겠지만.. 한 번 생각해 보겠습니다.
isul
2005/05/22 19:11
/BigS님..
수동 설치 파일 새로운 버전에 맞게 만들어서 올려두었습니다.
BigS
2005/05/23 10:08
이슬님... 감사합니다. ^^
martin
2005/08/09 17:04
IEPageSetupX.Clear();
IEPageSetupX.Print();
이렇게 사용하고 레지스트리 정보를 확인하니
여백이 모두 0.25000 으로 설정이 되어버립니다.
버그인것 같습니다.
isul
2005/08/09 23:35
사용하시는 OS와 IE 버전이 어떻게 되는지요? 그리고 제 웹페이지에서 테스트 한 결과인가요?
막 테스트 해 봤는데 전 0으로 이상없이 설정됩니다.
소스에서도 0으로 설정되도록 되어 있네요.
Montana
2005/09/15 19:16
보안을 위해 Internet Explorer가 이 사이트에서 사용자의 컴퓨터로 ActiveX 컨트롤을 설치하는 것을 차단했습니다. 옵션을 보려면 여기를 클릭하세요.
라고, 메세지가 나타나고, IEPageSetupX가 제대로 실행되지 않습니다. 어떻게하면 위의 메세지없이 제대로 실행되어 사용할 수 있는지요?
isul
2005/09/15 20:49
SP2 설치하셨군요..
이 문제는 이 컨트롤에 관련된 문제가 아니라 모든 ActiveX 컨트롤에 관련된 문제입니다.
수동 설치(데모 페이지에 있습니다)하시거나 IE 옵션에서 ActiveX 관련된 사항을 설정 하시기 바랍니다.
자세한 사항은 SP2 ActiveX로 검색하면 나올 겁니다.
Montana
2005/09/19 18:36
답장 주셔서. 감사합니다.
현재 외국 업체를 대상으로 웹사이트를 만들고 있는데,
혹시, 영문 수동설치 버젼은 없으신지요...좀 급합니다...^^;;
그리고, 수동으로 설치 했는데,
보안을 위해 Internet Explorer가 이 사이트에서 사용자의 컴퓨터로 ActiveX 컨트롤을 설치하는 것을 차단했습니다.
라는 메세지는 뜨지 않는데, 프린트하면 페이지에 오류가 있습니다. 라고 브라우져 아래 메세지 창에 뜨고, 오류 내용을 보니, IEPageSetupX이 정의되지 않았습니다. 라고 뜨네요...^^
제가 뭔가를 잘못 설치 한건가요?
좀 급한데, 답장 부탁드리겠습니다...^^;;
Montana
2005/09/20 16:04
자주 문의드려 죄송 합니다.
수동으로 설치해서 하니 잘 됩니다...^^; 죄송
그런데, 수동설치시 안내문구가 한글인데...
영문문구 수동설치 버젼은 없으신지요... 꼭, 필요한데...
패스워드가 일치하지 않다고해서.. 글을 못지웠네요.. 지저분하게 되어서 죄송하구요.
암튼 소스 올렸습니다.... 좀 봐주시구... 스크립부분에 좀 틀린게 있네요,..
밑에서 두번째.. 실제로 이렇게 쓴건 아니고 document.Form1.IEPageSetupX.Clear();
이렇게 썼습니다. ^^
filter:Alpha(Opacity=50); <== 이것을 지워주고 하면 나오긴 나오는데.....
투명이 안먹은 상태에서 나오더라구요... 현재 제가 아는게 이거밖에 안됩니다...
혹시 해결방법을 알고계시면.. 부탁드립니다.
isul
2005/11/09 19:54
실제 인쇄해도 위에 있는 그림과 같게 나오네요..
두 이미지가 겹쳐져 나오긴 하는데 화면에 보이는 것처럼 나오진 않네요..
filter:Alpha(Opacity=50);은 FireFox에선 적용되지 않네요.. IE에서만 되는 것 같네요..
HTML 표준이 아니라서 그런 게 아닐까요?
mers4u
2005/11/16 14:06
이슬님 답변 감사합니다....
몇일 정신이없어서.. 못왔었는데...
음 아무래도 filter 를 쓴다는거 자체가 잘못된듯 하네요...
이미지 자체를 투명하게 만들지 않으면 안될거 같아요.. ㅠ.ㅠ
암튼 답변감사합니다.
mers4u
2005/11/17 15:06
이슬님 바쁘신데 자꾸 질문해서 죄송합니다..
페이지 인쇄를 하게 되면 스크립트 에러가 뜬다고 하는데.. 그 이유를 아시는지요?
그거에대해서 검색을 해보니.. 프린트 드라이버가 깨졌다고 하는데..
다른곳에서는 잘 되거든요...
res://C:WINDOWSsystem32shdoclc.dll/preview.dlg
여기서 에러가 났다고 하네요
isul
2005/11/18 16:13
특정 컴퓨터에서만 그런 것인가요??
만약 특정 컴퓨터에서만 그렇다면 Microsoft Script Host Engine의 버전에 따라 발생할 수 있습니다.
Script Host Engine을 최신 버전으로 업데이트하시고 테스트 해보세요..
프린터 드라이버가 깨어졌다면 프린터 드라이버를 다른 것으로 교체한 후 해 보심이..
FinePrinter같은 가상 프린터를 설치하셔서 테스트 해 보시면 될 것 같습니다.
mers4u
2005/12/01 17:47
이슬님~ 한가지 더 여쭤볼게요.... 위에 에러때문에 그런데요... 이게 이미지를 인쇄할때는 정상적으로 잘 나오거든요.. 근데.. 텍스트 인쇄를 하게 되면.. 에러가 뜨네요.. 스크립트 에러....res://C:WINDOWSsystem32shdoclc.dll/preview.dlg
이 에러요.. 이게 특정 컴만 그런게 아니라.. 그 페이지에서 인쇄를 하려고 하면.. 전부 뜨게 되는데.. 어떻게 해야 할지 ......
isul
2005/12/01 20:06
에러가 발생하는 페이지를 알려주셔야 원인을 분석할 수 있을 것 같습니다.
저도 처음 들어보는 에러가 달리 도와드릴 수가 없네요..
mandoo
2005/12/06 10:58
참 좋은 프로그램 감사합니다.
많이 이용하고 이슬님 소개 많이 해드릴께요.
isul
2005/12/07 21:39
mandoo//
고맙습니다^^
이슬님께
2005/12/14 15:52
버그신고에 예전에 신고했던 내용인데요.
인쇄설정컨트롤로 여백설정을 하는 페이지가 있습니다.
이 페이지가, 잘 작동하는데,
모든 사용자가 다 프린터를 설치한건 아니거든요. 프린터가 아예 없는 사용자가, 이 페이지를 접근하면, IE 포커스가 안되어서, IE 를 컨트롤 할수가 없습니다.
작업관리자에서 IE 를 죽여야만 하는 상황이 발생합니다.
isul
2005/12/15 01:29
1.0.20.3으로 업데이트 되었습니다.
프린터가 없을 경우 IE가 포커스를 잃어버리던 문제를 해결하였으며, IE의 프린터 설치 메시지를 표시합니다.
2.body 태그에서 onunload="롤백부분" 이부분은 설치후 닫을경우 에러가 없지만 그냥 닫을경우 스크립트 에러 발생
=>
function window.onunload()
{if (Installed())IEPageSetupX.RollBack();}
로 대체
이상 짜잔한 에러 수정이었습니다.
isul
2006/01/11 03:26
서동희//
고맙습니다.
지적해주신 부분까지는 생각 못했네요..
서명훈
2006/01/12 14:45
IEPageSetupX.Print()
를 호출한 후에 인쇄가 정상적으로 되었는지를
체크할 수는 없을까요?
연속 인쇄를 하고 있는데, 용지가 떨어지거나 그러면
인쇄를 중지해야 하잖아요..
그럴 때 액션을 취해서 관리자에게 알게 하려고 하거든요
그러려면 인쇄를 실패했을 때를 찾아야 하는데요
인쇄방향설정구문을 여백설정구문 이후에 넣으니깐 제대로 적용이 안되네요.
IEPageSetupX.leftMargin=12;
IEPageSetupX.rightMargin=13;
IEPageSetupX.topMargin=14;
IEPageSetupX.bottomMargin=15;
IEPageSetupX.Orientation = 0; //마지막에 설정하면 X
이렇게 하니깐 여백들이 자기자리를 제대로 못찿고 헤맵니다.
꼭 인쇄방향설정 후 그다음에 여백설정 하셔야 제대로 적용됩니다.
IEPageSetupX.Orientation = 0; //제일처음에 설정해야함
IEPageSetupX.leftMargin=12;
IEPageSetupX.rightMargin=13;
IEPageSetupX.topMargin=14;
IEPageSetupX.bottomMargin=15;
ps. 이슬님, 정말 밥이라도 한끼 사고 싶은 맘입니다. 정말 프로그램 잘 사용하고 있습니다. 울산에 오실일 있으시면 함 연락주세요. ^^
참, 한가지 의견이 있는데 워터마크 기능은 어려울까요? 프린트시 배경이미지 같은거 나올수 있게요. ^^; 넘 부담갖진 마시구요.
오늘도 즐거운 하루 보내시길..
isul
2006/01/12 19:11
서명훈//
인쇄 명령 보낸 후 정상적으로 처리되었는지 확인할 수 있는지 한 번 알아보겠습니다.
언제 된다고는 말씀 못 드리겠네요..
isul
2006/01/12 19:22
서동희//
알려주신 인쇄 방향 설정 기능이 여백 설정 기능의 위치에 따라 되고 안되는 문제는 확인 후 수정 해 드리겠습니다.
수정되면 이곳에 올려놓겠습니다.
그리고 워터마크 기능은 PrintBackground 속성과는 다른 걸 말씀하시는 것이죠?
프린트하는 것은 그냥 IE에 있는 명령을 이용하는 것이라 IE에서 지원안되는 것은 지원하기 어렵습니다. IE 기능을 이용하지 않고 전용 인쇄 기능을 만들어야 가능할 것 같습니다.
울산은 갈일이 없네요.. 버그 알려주신 점 고맙습니다. 되도록 빨리 수정 해 보겠습니다.
행복한 나날 보내세요^^
프리맨
2006/02/14 15:00
안녕하세요.
인쇄프로그램 아주 유용하게 잘 사용하고 있습니다.
그런데 아래 header,footer에 html을 먹게 할수는 없는지요.
그럼 좋은 하루 되세요.
프리맨//
이 컨트롤은 IE의 인쇄 기능을 그대로 이용하는 것입니다.
IE에서 지원하지 않으면 지원되지 않습니다.
원하시는 기능으로 만들려면 인쇄에 관련된 모든 기능을 따로 구현해야 됩니다.
찬이
2006/03/15 05:20
안녕하세요.
좋은 프로그램 잘 사용하고 있습니다.
프로그램을 사용하면서 사용자들이 많이 요청하는 부분이 미리보기 비율이 75%로 고정되어 있는데, 이걸 100% 나 폭넓이를 지정할 수 있었으면 좋겠고 하더라구요.
혹, 이러한 기능이 구현 가능하신지요? ^^* 이런 질문하는것 자체가 좀 염치가 없네요... --;
구현해 주시면 또 열심히 사용하겠습니다. (__);
그럼 좋은 하루 되세요.
isul
2006/03/15 23:50
찬이//
일단 지금은 시간이 없어서 시도해 볼 수는 없구요..
4월 중순이나 되어야 시도해 볼 수 있을 것 같습니다.
해 보진 않았지만 문제없이 될 것 같습니다.
neoaj
2006/04/06 17:49
저역시 공개해주신 프로그램 잘쓰고 있습니다
그런데 아직 iframe에 대한 미리보기는 구현이 안되는지요?
iframe으로 인쇄는 가능한데 미리보기는 원래 메인화면을 보여주니 ..
욕심이 생기는 군요.. 죄송 ㅠㅠ
isul
2006/04/07 00:04
neoaj//
IE에서 지원 안되는 것은 이 프로그램으로도 지원이 안됩니다.
열심히 시도해 보고 되면 이곳에 올리겠습니다.
psk1092//
2005/05/16에 올라온 글은 다른 분이 남기신 글인데요..
IEPageSetupX.paper = "A4";
이 부분은 지원하지 않는데 사용하셨네요..
용지 설정 기능은 지원되지 않습니다.
drawhan
2006/07/11 11:52
오호라... 좋은 프로그램 감사합니다. 보통 scriptx나 이런걸 쓰는데 실제 만드셨다는데에 대해 깊은 감사를 드립니다.
아 질문이 하나 있는데 창이 길어서.. 짤리는건 어쩔수 없는거지요?
isul
2006/07/13 03:24
drawhan//
예.. 길어서 짤리는 것은 어쩔 수 없습니다.
이 컨트롤이 IE에 있는 기능을 그대로 사용하는 것이라서 IE에서 안되면 이 컨트롤에서도 안됩니다.
인쇄 컨트롤을 IE와 관계없이 독립적으로 동작되게 만들지 않는 이상 안될 겁니다.
문현종
2006/09/07 17:53
컴퓨터 문제인지 일부 pc에서 copyright는 지울수 없습니다. 라는 메세지의 팝업창이 계속 뜨는군요.(컴포넌트 재설치해도 계속 그렇구요) 물론 <param name="copyright" value="http://isulnara.com">를 넣었는데도 그렇군요. 한번 확인을 부탁을 드립니다. 아 이걸루 좀 많이 힘들었습니다.
btcom@hanmail.net
isul
2006/09/08 19:30
문현종//
메일 보냈습니다.
스팸 메일함 확인해보세요..
구성하신 페이지의 URL을 이곳이나 메일로 알려주시면 확인 후 연락드리겠습니다.
gu2da
2006/10/02 11:19
안녕하세요.
만드신 플그램 잘 쓰고 있어요.
이번에 OS를 새로 설치했는데요. WIn Srv2003 이고요.
설치가 되지를 않네요.
수동설치를 해도 프로그램은 등록되는듯 한데.
자꼬 설치 되지 않았다고 에러만 나고요.
전에는 잘 썼었는데 왜 그럴까요..? ' '?...
혹시 OS를 타나요?
gu2da
2006/10/02 11:20
아 참고로...
이슬님 페이지의 예제로 해도 설치가 되지 않습니다.
isul
2006/10/02 17:36
gu2da//
안녕하세요.
제가 윈2003서버 사용하고 있는데요....
이상없이 잘 됩니다. 윈2003 몇 대 테스트 해 봤는데 잘 됩니다.
OS를 타지는 않습니다.
예제 페이지에서 "컨트롤 설치 여부 검사" 클릭했을 때 설치되지 않았다고 나오는지요?
혹시 실시간 애드웨어 제거 프로그램 같은 거 사용하고 있지는 않는지요?
이런 프로그램에서 간혹 오진하는 경우가 있습니다. 액티브엑스를 모두 차단하는 경우도 있구요..
제가 직접 화면을 보지 않고서는 원인을 찾기가 어려울 것 같습니다.
소스 제일 위에 있는
<script type="text/javascript" src="http://www.interdigm.co.kr/embed_patch.js"></script>
를 제거하시면 됩니다.
ActiveX 활성화 관련된 코드인 것 같은데.. 다른 방법을 사용해야될 것 같습니다.
시간이 없어 자세히 보지 않아서 대체할 코드는 아직 알아 보지 못했습니다.
isul
2006/12/12 21:08
아... 이 컨트롤을 사용자자로부터 어떤 액션을 받는 것이 아니기 때문에 ActiveX 활성화 패치는 필요하지 않습니다.
즉, 문제의 라인은 삭제하셔도 될듯합니다.
저기 위에 올려주신 소스(바로 위 소스 말구요)는 에러가 발생하여 제대로 테스트 해 볼 수 없었습니다.
<script language = "javascript">
//각 페이지 마다 있어야 하는 함수
var initBody;
function beforePrint(){
initBody = document.body.innerHTML;
document.body.innerHTML ='<OBJECT id=""IEPageSetupX"" classid=""clsid:41C5BC45-1BE8-42C5-AD9F-495D6C8D7586"" codebase=""./IEPageSetupX.cab#version=1,0,20,3"" width=0 height=0><param name=""copyright"" value=""http://isulnara.com""></OBJECT>' idPrint2.innerHTML;
}
위 코드는 문법적으로 에러가 발생합니다.
테스트한 정확한 코드를 올려주시거나 관련 URL을 알려주시면 다시 확인 해 보겠습니다.
자동 업데이트 기능이나 메시지 처리 기능을 생각 해 보았는데 문제가 있다고 판단되어 추가하지 않았습니다.
컨트롤이 업데이트되어 이 컨트롤이 사용된 웹사이트를 이용하는 고객이 그 메시지를 직접 보게 되면 문제가 있을 것 같아서요^^
조금 불편하더라도 개발하신 분이 수동으로 업데이트 시키는 것이 맞다고 판단했습니다.
soulcarta
2007/01/04 12:52
우선 좋은 프로그램 감사합니다.^^
scriptX가 몇몇 PC에서 자꾸 문제를 일으켜 다른 프린터 컨트롤을 찾던중 IEPageSetupX를 테스트 해보고 있습니다.
그런데 테스트를 하다보니 모달창으로 창이 뜬경우는 Access오류가 나는군요. 이건 어떻게 수정이 가능하신지요? 팝업창으로 띄우니 되긴 하는데 꼭 모달창으로 띄워야만 하는 경우도 있어서요..
일단 테스트만 해 보았습니다.
showModalDialog() 또는 showModelessDialog() 함수를 이용하여 호출한 페이지에서는 다음 메소드 및 속성은 동작되지 않습니다.
SetDefault(), Preview(), SetupPage(), CloseIE(), Orientation, Print()
여백, 머리글, 바닥글을 설정 후 window.print()를 이용하여 인쇄하시기 바랍니다.
프로그램을 수정하여 showModalDialog() 또는 showModelessDialog()를 사용한 페이지에서 사용할 수 있는지는 더 검토해봐야 알것 같습니다.
apj
2007/01/10 18:39
정말 유용한 프로그램이네요.
라이센스는 어떻게 되나요??
그냥 써도 상관없는건가요??
제가 정말로 필요로 하는건데..
제발 ???
OBJECT 코드에서 아래 코드를 삭제하지 않고, 이 컨트롤 자체를 판매하지 않는 한 모든 곳에 사용할 수 있습니다.
<param name="copyright" value="http://isulnara.com">
김세진
2007/06/05 21:54
안녕하세요.
컴포넌트를 잘 사용하고 있습니다.
다름이 아니라 프린트 인쇄시 아래로 갈수록 오른쪽으로 출력물이 밀립니다. (레이져 삼성 ML-2570)
그래서 다른 프린터 레이져, 잉크젯으로 프린트를 보니 이상은 없습니다.
워드문서로 테이블을 만들어 인쇄를 해보니 이건 정상적으로 나옵니다.
혹시나 해서 컴포넌트가 특성을 타는지, 이런 이야기를 들어보셨는지 해서 문의 드립니다.
한글 윈도우이면 기본 설정으로 "국가 언어 및 옵션"에서 "미터"로 설정되며, 인쇄 페이지 설정에서도 "밀리미터"로 나옵니다.
인쇄 페이지를 설정하기 위해서 시스템의 설정을 "인치"로 변경하는 것은 좋은 방법이 아닐 것 같습니다.
인쇄할 때만 변경하고 다시 돌려놓을 수도 있지만 시스템은 인치를 사용하고 인쇄 페이지는 미터를 사용하는 것은 혼란을 가져올 수도 있을 거라 생각됩니다.
시스템에 설정된 사항을 그대로 따라가는 것이 맞다고 생각됩니다.
용지 설정은 현재 구현되어 있지 않습니다.
IE 버전, OS 버전에 따라 나타나는 항목이 같은지 다른지 확인해봐야 됩니다.
만약 모두 동일하다면 기능을 추가할 수 있습니다.
현재 사용하고 계신 OS 및 IE 버전과 IE의 페이지 설정창에서 용지 크기 부분의 목록을 보내주시거나 화면을 캡쳐해서 보내주시면 많은 도움이 되겠습니다.
궁금이
2007/12/08 09:17
안녕하세요?
덕분에 인쇄 컴포넌트 잘사용하고 있습니다.
다름이 아니오라 인쇄하면 왼쪽 상단 부분에 제일 첫페이지에만 점(.)이 찍혀 나옵니다.
소스상에 아무리 찾아봐도 점이 출력되도록 한 부분이 없는데 자꾸 첫페이지에만 .이 찍혀 나오네요
도움 부탁드려요~~ 좋은하루되세요 ^^
프린터를 지정하려면 클라이언트에 어떤 프린터가 설치되어 있는지 알아야될 것 같습니다.
웹의 특성상 사용자의 컴퓨터에 설치된 프린터를 미리 알고 있기란 쉽지가 않은 것 같습니다.
사용자의 컴퓨터에 설치된 프린터의 목록을 이미 알고 있는 상태라면 가능하겠지만요...
예를 들면, 서버에서 A란 프린터로 출력되게 설정하고, 사용자의 컴퓨터에 A란 프린터가 없을 경우 문제가 되겠지요..
컨트롤에서 클라이언트에 해당 프린터가 있는지 검사해서 처리할 수도 있지만 좀 복잡해질 것 같습니다.
2008/01/09 12:53
관리자만 볼 수 있는 댓글입니다.
초보쟁이
2008/01/09 12:57
웹페이지 초보입니다.
미리보기에서 인쇄를 하면 대화상자가 뜨네요.
대화상자 않뜨게 할순 없나요?
또 부분페이지 인쇄를 어떻게 해야할지 초보라 감을 잡기가 힘드네요 예제로 간단히 답해주시면 너무 감사하겠습니다. 첫 댓글에 너무 많은 것을 요구하네요.
죄송합니다.
웹페이지에서 볼 때는 나타나지 않아서 지금까지 몰랐네요..
12월에 한 분이 인쇄할 때 점이 찍혀 나온다고 했는데 전 그것이 실제 인쇄할 때와 미리보기에서 나오는지 몰랐네요..
고맙습니다.
박종성
2008/02/18 16:40
제가 찾고 있는 컴포넌트 입니다. 유용하게 쓰겠습니다.
근데 한가지 질문이 있습니다.
IE 화면에서원하는 부분만 출력하려고 합니다. 코딩을 해서 미리보기로 하면 배율옆에 화면보이는대로/선택한프레임만/모든프레임 선택 메뉴가 나오는데 선택한 프레임을 디폴트로 하는 방법은 없나요?
예.. 위에 "라이센스 관련"에 나와 있는 것처럼 이 컨트롤 자체를 판매하지 않는 이상 상업용 웹사이트에 사용해도됩니다.
강성진
2008/02/19 15:40
안녕하세요.
위에서 사용해도 된다는 글을 읽어서 바로 위의 제 글을 삭제하려고 하나 삭제 방법을 몰라서 이렇게 다시 글 올립니다.
잘 사용하겠습니다.
감사합니다.
김원종
2008/02/26 23:31
안녕하세요. 오래전부터 쭈욱 지켜보아왔던 웹개발유저입니다.
좋은 프로그램을 이렇게 공개해주시는데 깊은 감사드리면서 기능중에서 이런것도 포함이 될수 있을까 싶어서 몇자 올립니다.
다름이 아니라 한 피씨에 프린터가 여러대 세팅이 되어 있고 그중 기본프린터로 인쇄가 되도록 되어 있는데요.
여러대의 프린터중 원하는 프린터로 설정하는 옵션이 추가될 수 있을까 싶어서요.
물론 설정이 없으면 기본 프린터로 인쇄가 되겠죠.
뭐 그렇게 필요한 부분은 아니라 생각되지만 그래도 옵션으로 추가될 수 있다면 좋겠단 생각이 들어서 몇자 적습니다.
다시한번 좋은 프로그램 공개해주셔서 감사드리며 이만 글 줄입니다.
안녕하세요..
2007/12/28에 하늘사랑님도 같은 요청을 하셨네요..
그때 제가 남긴 답글이 아래와 같습니다.
"프린터를 지정하려면 클라이언트에 어떤 프린터가 설치되어 있는지 알아야될 것 같습니다.
웹의 특성상 사용자의 컴퓨터에 설치된 프린터를 미리 알고 있기란 쉽지가 않은 것 같습니다.
사용자의 컴퓨터에 설치된 프린터의 목록을 이미 알고 있는 상태라면 가능하겠지만요...
예를 들면, 서버에서 A란 프린터로 출력되게 설정하고, 사용자의 컴퓨터에 A란 프린터가 없을 경우 문제가 되겠지요..
컨트롤에서 클라이언트에 해당 프린터가 있는지 검사해서 처리할 수도 있지만 좀 복잡해질 것 같습니다."
많은 분들이 필요한 기능이라면 추가할 수는 있습니다만... 많은 분들이 필요로하는 것 같지는 않아서 추가하지 않았습니다.
또한, 위에 언급했듯이 구현하는데도 여러가지 문제가 있을 것 같습니다.
특정 프린터로 출력한다는 것은 특정 이름을 가진 프린터를 의미하는지요?(이럴 경우 사용자가 프린터명을 변경할 경우 문제가 발생하겠지요)
아니면 특정 모델을 의미하는 것인가요? (거의 발생하지 않겠지만 같은 모델이 두 개 설치된 경우도 있을 수 있겠군요)
일단 편법으로 아래와 같은 코드로 해결할 수 있습니다.
<SCRIPT LANGUAGE="JavaScript">
<!--
window.open("c1.html","1","top=0, left=0, width=800, height=700");
setTimeout('window.open("c2.html","2","top=200, left=200, width=800, height=700");', 100);
//-->
</SCRIPT>
첫 번째 창을 띄운 후 약간 지연 시킨 후 다음 창을 띄우는 것입니다.
안되면 지연 시간을 조금 수정하면 될 것 같습니다.
안녕하세요? 이슬님^^ 프린터 ActiveX 모듈 정말 감사하게 잘 이용하고 있는 사용자 인데 한가지 의문사항이 있어서요
하단 소스 처럼
<Table>
<tr>
<td>
<img src="" name="img1">
<div><img scr=""></div>
</td>
</tr>
</Table>
형태로 인쇄를 하는데 Div태그에 있는 이미지가 위치를 잡고 img1의 위에 겹쳐 나와야 하는데 그렇게 나오지 않고
아예 다른 페이지에 인쇄되어서 나와서요 해결 방법을 좀 알고 싶습니다.
댓글들을 읽어보니까 위에 비슷한 사항이 있는거 같은데 소스예제 올려주신 페이지가 링크가 안돼네요^^
안녕하세요.
좋은 프로그램을 공개해 주셔서 감사합니다. 딱하나 아쉬운점이 있다면 위에 몇몇분도 얘기를 하셨던데.. 프린터를 지정할 수 있으면 정말 좋을 것 같습니다. 설치된 프린터 목록을 가져온다던지 그런 부분은 모두 빼고 프린터 이름으로 그냥 바로 지정할 수 있으면 좋겠습니다. (프린터 설치여부 이런 체크도 모두 빼고요.. 출력할 프린터 이름을 지정할 수만 있으면 좋겠습니다) 그리고 용지설정 기능까지 포함된다면 정말 백점만점 프로그램이 되지 않을까 싶네요. 프린터이름 지정만이라도 반영이 되었으면 좋겠습니다^^ 감사합니다.
다들 서울분들이시네요. 흑흑~~
전 지방이라서... 맘같아선 당장 올라가서 서로 얼굴도 보고 이런저런 얘기도 나누면 좋겠는데.. 현재 개발건이 줄줄이 엮여 있는 상태라.. 현실이 그렇지 못합니다. 대신 담에 서울가면 꼭 식사대접 하겠습니다. (절대 빈말아닙니다. 가기전에 연락드리고 가겠습니다)
아참.. 신버전 버그리포팅은 아니구요. 기존 버전으로 테스트했을때입니다. (영수증 프린터에 현금영수증을 인쇄하는 경우입니다) 상하좌우 여백을 0으로 설정한 경우 첫번째 테스트 - 여백을 0으로 하고 수동 프린터한 경우에는(페이지에서 오른쪽 버튼을 누르고 인쇄를 선택한 경우) 정상적으로 여백이 0으로 설정되고 인쇄도 됩니다. 인쇄후 설정에 보면 여백도 0입니다. 그런데 자동프린터(대화창없이 바로 프린터하는 경우)하는 경우는 여백이 0으로 설정되지 않고 다른값으로 설정이 됩니다. 인쇄후도 0이 아닌 다른값으로 설정되어 있습니다. 한번 봐주시구요..
공개해주신 신버전은 프로그램에는 적용했는데 실제 프린터로 테스트를 좀 해봐야 되는데 영수증프린터가 해당업체에 있는 관계로 며칠뒤에 직접 가서 해봐야 될 것 같습니다.
해보고 혹시 버그가 있으면 다시 리포팅하겠습니다.
끝으로 사용자정의 종이의 경우는 어떻게 설정해야 하는지 살짝 궁금합니다^_^
프린터 특성을 탈만한 기능은 없습니다.
정확히 어떤 상황에서 어떤 문제가 발생했는지 알려주시면 확인해보겠습니다.
초보재이
2008/06/17 18:50
다시정리해서 말씀드려야겠네요
버전을 1,0,20,4를 쓰고있는데요. 집에서 이버전으로 인쇄페이지를 두개를 구성하여 잘쓰고 있는데요
사무실에 네트워크로 구성된 레이저 프린터에선 첫번째구성한 웹페이지에선 인쇄페이지가 잘 나오는데
이번에 구성한 두번째웹페이지에선 인쇄가 먹통이 되네요. 혹시 위질문과 비추어 답변좀 부탁드려요.
소스나 URL 정보를 이곳에 공개하기 어려우면 이메일로 보내주셔도 됩니다.
isul at isulnara.com
초보쟁이
2008/06/17 19:16
그럼 혹시 IEPageSetupX다운로드 받은 파일을 이름을 달리하여 셋팅을 하면 문제가 생길까요?
사무실이 제가쓰는 사무실이 아니라 다른 지사라 정확한 내용을 모르고 네트워크로 사용하는 레이져프린터이고
같은 홈페이지에 첫번째로 구성한 페이지에서는 출력이 되는데 두번째로 구성한 페이지에서는 출력이 안된다는 부분
이 문제죠^^ 집에서는 잉크젯프린터를 사용하는데 두페이지 다 인쇄가 잘되거든요.
언제 한 번 시간내어 IE7의 확대/축소 기능에 대해서 분석해보겠습니다.
분석해보고 가능하면 추가해드리겠습니다.
언제될런지는 장담 못하겠습니다.
까리쓰마
2008/11/22 17:37
바로 위에 페이지 확대/축소 요청드렸던 까리쓰마입니다. ^^;
사용하다가 한가지 버그를 발견하였습니다. XP + IE6 환경에서의 테스트입니다.
프린터가 설치되지 않은 경우에 Preview()가 실행되면 미리보기 창이 나오지 않습니다.
또한 IE창도 더이상 컨트롤 할 수가 없게 됩니다. 작업관리자에서 강제로 죽여야 합니다.
PC 방에서 사용해본 건데 PC 방에서는 작업관리자도 막아버려서 창닫기도 불가능... ^^;;;
확인을 부탁드립니다.
먼저 유용한 프로그램을 배포해 주셔서 감사하다는 말씀부터 드립니다.
꼭 필요한 프로그램이었거든요...ㅎ
지금 테스트 하다가 아쉬운 점이 있어서 글 올립니다.
테스트 환경은 XP+IE7 입니다. 초기실행으로
IEPageSetupX.Clear();
IEPageSetupX.PaperSize = "A4";
IEPageSetupX.Orientation = 0; // 용지 방향 가로 설정
IEPageSetupX.leftMargin,IEPageSetupX.rightMargin,IEPageSetupX.topMargin,IEPageSetupX.bottomMargin 등으로
여백을 설정해 주고난 후
IEPageSetupX.SetupPage();로 페이지 설정 창을 열면 여백은 초기 설정값대로 설정되어 있는데,
용지 방향은 초기 설정값과 다르게 설정되어 표시되며
용지 방향을 다른 값으로 변경 설정한 후 [확인]을 눌러 페이지 설정 창을 닫고
IEPageSetupX.Preview(); 미리보기를 실행하면 용지 방향이 변경되어 있지 않습니다.
또한 초기 설정된 여백 값과 달리 표시됩니다.
미리보기 창을 닫고 다시 페이지 설정 창을 열어보면 설정된 여백값이 미리보기에서 보았던 그 값의 숫자가 나타납니다.
아무쪼록 프로그램이 빠른 시간 안에 더 훌륭하게 되길 바라는 마음에서 글을 올립니다.
이슬나라...!!! 참 좋은 나라인 것만은 틀림없는 것 같습니다.^^;ㅋ
행복이 항상 함께하길 바라며...
isul님! 안녕하십니까?
요즈음 많이 바쁘신가 봅니다. 잘은 모르겠지만...^^;
IEPageSetupX.GetPrinters();로 프린터 목록을 알 수가 있었는데,
혹시 그 목록 중 기본 프린터로 설정되어 있는 프린터가 어느 것인지 알 수는 없겠습니까?
기본 프린터가 어떤 것으로 설정되어 있는지를 알아야 목록을 보여줄 때 미리 선택되게 보여줄 수 있을텐데 말입니다.
오늘도 모든 일이 잘 풀려나가는 하루가 되시길...!
isul님의 댓글이 어찌나 반가운지...^^; 인사글 올립니다.
지금 IEPageSetupX의 기능들을 이용해서 Programming하고 있는 중인데,
isul님이 아니었으면 아마도 인쇄 기능을 포기했었을 것입니다.
isul님도 건강에 유의하시기 바랍니다.
IEPageSetupX에 직접 관련된 것은 아닙니다만 한가지 더 고민이 있어 질문드립니다.
aName[]에는 이름들이 들어가 있는 배열입니다.
for(i=0; i<aName.length; i++) {
document.form.name.value=aName[i];
document.form.submit(); // 이름에 해당하는 데이터가 인쇄하고자 하는 IE 화면에 표시되게 하는 방법
IEPageSetupX.Print();
}
이렇게 했더니 aName[]에 해당하는 페이지만이 아니라
현재 보여지고 있는 IE 페이지도 함께 인쇄되어 나옵니다.
좋은 방법이 없을까요?
isul님은 해결책을 제시해 주실 수 있을 것만 같아서...!^^;
먼저 답글 해주심에 감사의 말씀드립니다.
저의 설명이 많이 부족했나봅니다. 하고자 하는 내용 줄거리를 말씀드리겠습니다.
"printPage"라는 IE Window를 열고 그 곳에서 IEPageSetupX의 메소드를 이용해 인쇄 여백, 용지 방향 등 각 속성값들을 설정해 주었습니다.
내용이 다른 페이지들을 그 "printPage" Window에 불러와 각각 인쇄하고 싶은데 어떻게 해야할 지 모르겠습니다.
submit()를 이용하여 내용이 다른 페이지들을 그 Window에 불러온 다음 맨 하단에서 IEPageSetupX.Print();실행시키니 [오류:메서드 또는 속성 액세스로의 예기치 않은 호출입니다.]라는 에러 메시지가 뜹니다.
이틀째 머리 싸매고 고민해 보았지만...!
isul님 부디 도와 주시길 부탁드립니다.
참, 한 가지 더 질문이 있습니다.
위의 사이트에 접속하신 후 테스트 해 보시면 아시겠습니다만 window.open()으로 연 창이 닫히질 않습니다.
var objWin=window.open('', 'print', '....');
objWin.document.open();
objWin.document.write("IEPageSetupX OBJECT 및 이름에 해당하는 내용을 DB에서 가져와 화면 표시");
objWin.document.write(IEPageSetupX.Print());
objWin.document.close();
objWin.close();
에서
objWin.document.write(IEPageSetupX.Print());
위 코드가
objWin.document.write('IEPageSetupX.Print()');
로 되어야될 것 같습니다.
창이 닫히지 않는 문제도 위 코드에서 에러가 발생하여 그 뒤의 두 라인이 수행되지 않은 것 같습니다.
이제 처리를 조금 변경시켜 먼저 인쇄할 이름들을 먼저 선택하게 하고 그 다음에 IEPageSetupX를 이용한 [인쇄 설정]에 이어서 [인쇄]가 될 수 있도록 해 보아야 겠습니다.
일주일 동안의 고민을 isul님의 친절함으로 일거에 날려 버릴 수 있게 되어서 정말 고맙습니다.
안녕하십니까? isul님!
isul님의 도움으로 드디어 하고자 했던대로 거의 마무리 되어가고 있습니다.
앞에서 말씀드렸듯이 인쇄할 이름들을 먼저 선택하게 하고 그 다음에 IEPageSetupX를 이용한 [인쇄 설정]에 이어서 [인쇄]가 될 수 있도록 해 보았습니다.
그렇게 하려다보니 결국은 window.open()으로 했던 방식은 포기하고 isul님이 위에서 제시해 준 그 방식대로 코딩을 완료했습니다.^_____^
테스트 인쇄를 해보니 선택된 자료들은 인쇄가 이상없이 잘 되는데...IEPageSetupX 컨트롤 설정에 의해 설정된 값대로 인쇄 되기도 하고 안되는 페이지도 있고 그렇습니다.ㅠㅠ
제가 무언가 놓친 부분이 있지 않았나 하는 생각을 해봅니다. 다시 한 번 사이트에 접속하시어 [페이지 설정], [미리보기] 등을 살펴 보아주시고 인쇄 테스트도 부탁드려 봅니다. 맨날 부탁만 드리려니 염치가 없군요...ㅠㅠ
참고적으로 제가 코딩한 내용을 말씀드리자면 인쇄 전 초기에 각 Margin들의 값을 설정해 주었습니다. 그리고 나서 페이지 설정(IEPageSetupX.SetupPage())에서 확인해 보니 초기에 프로그램에서 설정된 값과는 다른값이 확인되었으며, 이어서 페이지 설정에서 여백값을 다른값으로 설정한 후 미리보기(IEPageSetupX.Preview())를 해 보면 페이지 설정에서 설정된 값으로 미리 보여지지가 않고 있습니다.
계속해서 미리보기 창의 페이지 설정(alt+U)을 이용해서 여백을 변경 설정한 후 미리보기 창을 닫고 다시 페이지 설정 버튼을 눌러보면 여백값들이 다르게 나오고 있습니다.
[페이지 설정]이나 [미리보기] 등 어느 곳에서 값들을 설정하더라도 또한 다른 어느 곳에서나 그 설정 변경된 값들이 반영되었으면 합니다만...
설명을 제대로 했나 모르겠군요.
확인 결과 버그가 맞더군요.
Michael님께서 요청하신 기능을 추가하면서 오른쪽과 위쪽 여백이 뒤바뀌는 문제가 발생하였습니다.
현재 수정하였습니다.(적용 버전: 1.3.0.2)
그리고, 컨트롤 설치 여부 확인은 데모 페이지에 있는 Installed() 함수를 참고하세요..
참고사항으로 IEPageSetupX을 이용하여 html 문서가 오픈되는 순간 여백이나 기타 기능을 사용할 경우 <script>IEPageSetupX.leftMargin=3;</script>처럼 사용하는 것보다는
<body onload='setMargin()'>처럼 onload 이벤트에서 처리해주시기 바랍니다.
고맙기는요! 오히려 제가 대단히 고마워 해야할 사람이지요!
이제 에러없이 아주 잘 동작되고 있습니다.^______^;
이 모든 것이 친절한 isul님이 아니었으면 저로선 불가능한 일이었습니다.
"IE 인쇄 페이지 설정 컨트롤"을 개발하여 무료 배포해 준 것만도 대단히 고마운 일인데,
거기다가 질문에 대한 답도 친절하게 달아 주시니...
고맙다는 말만으로는 고마움을 표시하기에 많이 부족한 것 같습니다.
위의 글 중 버그 리포팅을 한 비밀글에 전화번호를 적어 놓았으니 시간 날 때 전화주시기 바랍니다.
친절한 분 얼굴도 뵙고, 쐬주라도 한 잔 나누고 싶습니다.
다시 한 번 대단히 고마웠다는 말씀 드립니다.
다행히 모두 잘 해결되었군요^^
일산에 사시는군요.. 저도 일산 대화동에 한 3년 살았었죠..
지금은 분당에 있습니다.
거의 반대편이네요..
제가 재미가 없는 놈이라... 쐬주 맛이 안나실텐데요..
제가 만든 프로그램이 다른 개발자 분들께 필요하고 도움이 되었다면 그것으로 충분합니다.
고맙습니다..
안녕하세요..
인쇄 매수는 지원하지 않습니다.
2부 인쇄하고자할 경우 print()를 두 번 호출하면 되는 것 아닌가요?
언제까지나
2009/01/02 17:22
안녕하세요! 업무일지용으로 1년동안 잘 사용하고 있습니다! 감사합니다!
2009년도 업무일지양식이 변경되어 다시 작성하는 증입니다.
바로 프린트인쇄를 하면, a4용지의 4/1만 나오는데,
미리 인쇄보기 해서 100%로 인쇄하면 정상적으로 나오거던요...
바로 프린트인쇄버튼을 눌러서 100%나 스케일(95%)로 크기를 지정해서 바로 인쇄되게 할 수 없는지요!
제가 기능을 못찾은 건지... 한번 확인 및 검토 부탁합니다.
새해 복많이 받으십시오!
이 ActiveX 컨트롤을 사용하는 ActiveX 컨트롤을 만들지 않고(즉, 이 ActiveX 컨트롤을 이용하여 또 다른 ActiveX 컨트롤을 만드는 것은 안됩니다), 이 ActiveX 컨트롤 자체를 판매하지 않는 조건(제가 만든 것을 자신이 만든 것처럼 또는 판매권리를 가진 것처럼하여 판매하는 것을 의미)으로 상용 프로그램에 포함시켜 배포하셔도 됩니다.
감사합니다
2009/01/09 12:07
isul님, 감사합니다. 잘 쓰겠습니다.
언제까지나
2009/01/09 15:24
답변감사합니다! IE6과 IE7 버전 사이에 인쇄가 좀 다르게 나오더군요! 그걸 모르고, 잘 사용하던게 왜 갑자기 1/4만 인쇄가 되나 했네요!... IE7기준으로 하도록 조치했습니다... 수고하세요...!
이게 버그인가 모르겠는데요. 인쇄할 내용이 길면 컨트롤이 정상적으로 작동을 안하는 것 같습니다.
세금계산서 인쇄하는 페이지에서 테스트를 해보는데요. 왜 세금계산서는 공급자용 /공급받는자용 부분이 거의 동일하잖아요
공급받는자 부분 html 태그 쪽만 인쇄하면 정상으로 프린터대화상자가 뜨는데, 거의 같은 소스를 밑으로 붙쳐서 인쇄하면 대화상자가 안뜨네요? 이것은 왜그런건지요
아흑. 워낙 초보다 보니. 흠흠. 어떻게 보면 게시물성격하고 좀 틀린 질문이 될수도 있겠지만 ㅠㅠ
제가 사용자 PC에 있는 프린터 목록을 만든뒤 선택후 출력하게 코딩을 했습니다.
허나 잘되는데 네트워크 프린트 같은 경우는 '\\100.100.100.100\프린트명' 이런식으로 비교를 해야 하는데
if (IEPageSetupX.GetPrinters().indexOf(print_s) > -1)
IEPageSetupX.Printer = print_s;
자바스크립트에 적용하게 되면 '\100.100.100.100프린트명' 이런식으로 되기 때문에 네트워크 프린터는 못찾는데요..
다른분들은 요런문제 어떻게 해결하셨나요? 좋은하루 되세요~
돌진추돌사고
2009/01/30 16:37
아~ 방금 해결했습니다. 자바스크립트로 해결해 볼까 했는데 그냥 프로그램 코드로 replace해서 넘겼습니다.
돌진추돌사고
2009/01/30 17:41
혹시 미리보기 호출시 멈추는 현상을 겪으신분 계신가요??
IEPageSetupX.PrintBackground = true; //배경색 및 배경이미지 출력
참고사항으로 IEPageSetupX을 이용하여 html 문서가 오픈되는 순간 여백이나 기타 기능을 사용할 경우 <script>IEPageSetupX.leftMargin=3;</script>처럼 사용하는 것보다는
<body onload='setMargin()'>처럼 onload 이벤트에서 처리해주시기 바랍니다.
IEPageSetupX을 이용하여 html 문서가 오픈되는 순간 여백이나 기타 기능을 사용할 경우 <script>IEPageSetupX.leftMargin=3;</script>처럼 사용하는 것보다는
<body onload='setMargin()'>처럼 onload 이벤트에서 처리해주시기 바랍니다.
이렇게 처리하지 않을 경우 말씀하신 에러가 발생할 수 있습니다.
올려주신 코드에서 setMargin()이 어떻게 호출되는지 알려주세요..
빠른 해결을 원하시면 테스트할 수 있는 URL을 알려주시면 좋습니다.
돌진추돌사고
2009/02/03 08:59
setMargin()은 말씀하신것처럼 body onload이벤트로 호출을 하고 있습니다.
전에는 function 하나에서 여백주고 미리보기 호출했지만 위에 말씀해 주셔서 약간의 수정은 했습니다.
허나 onload시 setMargin만 호출하고 Preview를 버튼처리 해도 마찬가지 문제가 일어나는군요.
제 주변에서 동일한 에러가 발생하는 컴퓨터를 찾을 수가 없어 해결하기가 쉽지가 않습니다.
원격으로 문제가 발생하는 화면에 제가 접속하지 않는 이상 해결은 힘들 것 같습니다.
혹시나 원격 지원(네이트온 등)으로 제가 접속할 수 있다면 연락(isul at isulnara.com)주세요..
돌진추돌사고
2009/02/11 10:38
아.. 혹시 os특성도 탈까요? 저는 win2000 server, ie6 컴퓨터 3대에서 테스트를 해보았는데...
winxp, ie6에서 테스트 해보고 결과 말씀드리겠습니다.
돌진추돌사고
2009/02/11 10:40
일단은 안심이네요. winxp, ie6에서 테스트시에는 잘됩니다... 고객컴퓨터가 설마 2000은 없겠지요..
허나 제경우는 win2000 server, ie6이었는데.. 이슬님께서 테스트하신 PC는 아마도 winxp, ie6이셨던것
같네요. 혹시 여건이 되신다면 저와 같은 조건에서 테스트 해보시고요. 안되시면 제컴퓨터 원격접속하셔서
보셔도 되요. 넷미팅으로 연결해 드릴께요. 신경써주셔서 무지무지 감사하게 생각하고 있습니다. (-,-)(_._)꾸벅
ps. 아마도 윈2000server의 comdlg32.dll이 버그가 있는게 아닐까싶네요... 웬지 미리보기 대화상자 띄울때 엑세스 오류가 나는듯 싶은데요...
안녕하세요. 저는 출력 시 정해준 여백설정이 다르게 적용되는 특정 컴퓨터가 있어 문의 드립니다.
모든 컴퓨터는 아니고 일부 컴퓨터에서 상단과 하단여백이 설정한 여백보다 더 많이 잡히는 현상이 발생합니다. 분명히 해당 컴퓨터의 세팅 문제 인거 같은데, 어떤 세팅을 바꿔야 하는지 혹시 아시는지요?
프린터 자체의 여백 설정 때문에 그런 것이 아닐까 생각됩니다.
이 ActiveX 컴포넌트를 사용하지 않고, 수동으로 각각 동일하게 여백을 설정하여 인쇄해보세요..
이럴 경우에도 동일한 문제가 발생하는지 말입니다.
확인 부탁드립니다.
제피
2009/03/18 09:43
안녕하세요. 우연한 기회에 scriptX대신 사용할 프로그램을 찾던 중 알게 되어 어제부터 테스트 중입니다.
정말 잘 만드셨다는 말씀밖에는.. ^^;
아 저 다름이 아니라 저는 인쇄하고자 하는 창이 보이지 않게 처리를 하려고 하는데요.
iframe에 가로세로를 0으로 주고 src를 변경시켜 인쇄 페이지로 이동하게끔 프로그램 했습니다.
인쇄 페이지에 IEPageSetupX 오브젝트가 있고 body안쪽에 위치 시켰습죠..
인쇄페이지 단독으로 실행시 이상없이 출력이 되나. iframe의 src를 이동시켜 인쇄할 경우
에러코드 102발생하면서 body의 onload에 메소드 호출을 하라는 메세지가 나옵니다.
이럴경우에는 어떻게 해야 하나요?? (focus.. 해봤습니다..)
안녕하세요!! ^^; 개발시에 항상 출력물로 인해 귀찮았었는데 이렇게 좋은 프로그램을 발견하게 되서 너무 기쁩니다.!! ^^
그런데 궁금한게 하나 있어서 이렇게 질문드립니다.
다름이 아니라 IEPageSetupX 에서 출력할 영역을 지정 할 수 있느냐 입니다.
예를 들자면 현재 페이지에서 메뉴 부분과 댓글 부분을 제외한 내용 부분만을 출력 하고 싶을 경우에 그 영역을 지정하는걸 말씀드리는 겁니다 ^^;
예제 등에서 살펴본 바로는 그 영역을 지정하는 부분이 보이지가 않아서 이렇게 질문을 드립니다 ^^;;
이슬님 안녕하세요~ 너무 좋은 프로그램 공개해주셔서 감사합니다.
다름이 아니라 제대로 설치한거 같은데요. xp에서는 화면일부가 잘리거든요.
그런데 비스타에선 인쇄영역을 조정할 수 있도록 조절자가 나타나더라구요.
엑스피에서도 그렇게 할 수 없나요?
이대로라면 디자인파일 크기랑 이미지를 다 줄여야해서 ㅜㅜ 급한 마음에 질문드려봅니다. http://www.kapa21.or.kr/kapaforum2/kapaforum.php?fid=4 입니다.
안녕하세요.
해당 기능은 현재 지원되지 않습니다.
몇 분이 요청하셔서 검토 중에 있습니다.
다음 버전에 추가하려고 노력하고 있습니다만...
언제 될런지는 모르겠습니다.
해당 기능은 다음 버전에서 최우선 순위로 두고 있습니다.
현재로서는 페이지에 맞게 이미지랑 텍스트 모두 수정하는 수 밖에 없을 것 같습니다.
고맙습니다.
조상훈
2009/06/24 18:39
정말 회사에서 유용하게 쓰고 있는 유저입니다. 감사의 말씀 먼저 드리고요
다름이 아니라 이상한 현상을 발견했습니다.
특정 자리의 컴퓨터에서 출력하게 되면 출력창은 뜨는데 출력창 포커스를 잃어버립니다. 출력도 안나오고요
출력 대화상자도 안나옵니다. 프린터 설치 되있구요. 다른 프린터를 기본 프린터로 설정도 해봤는데 증상은 똑같네요
액티브 x 지웠다가 다시 깔아도 보고 재부팅도 해보고 보안 프로그램들 싹다 지워버리고도 해봤는데
여전합니다.
전체가 다 그런다면 제가 만든 소스의 문제겠지만 한 컴퓨터에서만 그러네요...
어떤 문제일까요...제 생각엔 그 자리에 있는 분이 설치한 어떤 프로그램과 충돌이 나는것 같은데;
어찌해야될까요...포멧한지 얼마 되지도 않은 컴퓨터인데 그러니...답답하네요
조상훈
2009/06/24 20:52
그 컴퓨터를 포멧했습니다 결국...그리고 원인을 찾아냈는데 해결방법을 모르겠네요
프린터 드라이버를 설치하기 전에는 정상적으로 작동하는데
네트워크로 연결된 프린터가 세대인데 그 드라이버 중 어느것 하나만 설치해도 창 포커스를 잃어버리는 현상이 발생하네요
어떻게 해야되는건지 정말 모르겠습니다......
다른 컴퓨터들은 다 이상없이 작동하거든요....깨끗이 밀어버린 컴퓨터에서 그러니...돌겠네요...
안녕하세요..
제가 원격으로 직접 볼 수 있으면 문제를 해결하는데 도움이 될 수 있을 것 같습니다.
제 주변에서 동일한 상황을 만나야 해결할 수 있을 것 같습니다.
혹시나 제가 원격으로 볼 수 있는 상황이 된다면 연락주세요..
오요섭
2009/06/25 10:05
정말 유용한 프로그램을 감사한 마음으로 잘 쓰고 있었습니다.
버그(?일지 모르는)현상이 생겨서 여쭈어봅니다.
하나씩의 낱장으로 프린트를 하게 되면 문제 없이 잘 되는것이,
같은 동작을 여러번 반복하면(.Print(false) 여러번) 원하는 출력이 아니라
처음 몇 장 만 제대로 나오다가 인쇄 버튼을 누른 웹페이지 그대로 나오더라구요,,,
암만 소스를 고쳐봐도 도통 해결이 안되는군요,,
방법이 없을까요?
WinXP SP3, IE7, IE8 에서 돌립니다.
print_page.html
제가 이해하기로 위 페이지는 iframe 내에서 불려지고,
function print_page()에서 window.focus();로 iframe으로 포커스를 이동시켜서 그 iframe내의 문서를 인쇄하도록 한 것 같습니다.
테스트 해보니 문제가 말씀하신 것처럼 iframe이 아닌 일반 웹 페이지가 인쇄되는 경우가 발생하네요..
focus를 잃어버리는 경우가 발생하는 듯합니다.
제 생각에는 function print_page()에서 window.focus();가 실행된 뒤
parent.IEPageSetupX.Print(false);가 실행되기 전 또는 실행되는 중(아직 실제로 프린터로 인쇄하는 명령이 내려지지 않은 상태)에
사용자가 다시 인쇄하기 위하여 'Deliveried' 리스트를 더블클릭하는 순간 focus가 메인 페이지로 이동되고,
인쇄는 현재 포커스를 가진 메인 페이지가 인쇄되는 것 같습니다.
focus 문제가 발생하는 iframe 방식보다는 레이어를 사용하여 인쇄하는 방법이 좋을 것 같습니다.
아래 링크 참고하세요.. http://isulnara.com/myAPP/IEPageSetupX/demo2.html
위 페이지에서 idPrint2를 style='display:none'으로 설정하고,
innerHTML로 인쇄 양식을 동적으로 변경시키고 인쇄하면 문제 없이 될 것 같습니다.
그리고, 다른 문제도 존재합니다. 사용자가 인쇄를 요청한 후 iframe의 페이지가 로딩 중에 다시 인쇄 요청하면 이전에 로딩 중이던 웹 페이지는 무시되죠..
즉, 2번째 요청에 대해서만 인쇄가 되는거죠..
이 부분은 인쇄 요청 시 인쇄 요청을 금지시키고, iframe에서 로딩 (인쇄) 완료 후 다시 인쇄 요청 가능하게 만들어 주는게 좋을 것 같습니다.
이슬님, 지적해주신 대로, 레이어 방법으로 바꾸는 과정에서,
인쇄 테스트를 하는데 이전에 적용시켰던 style이 하나도 안먹히는데요,
예를 들면, 테두리 두께라던지 테이블 속성들이 하나로 통일되어져 인쇄가 됩니다.
레이어 방법에서는 style="border-width:1;bborder-style:solid;" 와 <table border=1>의 두께가 틀립니다,
여백 설정도 틀리고,, 흠,, 어떻게 해야할까요?? CSS는 전혀 안써봐서,, CSS로 해결 될까요?
죄송합니다만 급한 일이 있어 더 이상은 분석해드리기가 어렵습니다.
css로 당연히 해결되리라 생각됩니다.
혼자서 해결이 어려우면 웹개발자 관련 사이트에 글 남기면 답변을 얻을 수도 있을 것 같습니다.
그럼 원하시는 결과를 얻길 바라겠습니다.
강휴석
2009/07/08 10:31
좋은 프로그램 덕분에 ScriptX 공개 버전으로 안되던 부분을 해결 했습니다.
그런데 전 2가지 문제가 있더군요.
일단 용지사이즈를 임의로 조절 하지 못하는 부분요.
A4, B5 이렇게는 조절 되지만 100*200 이런 임의의 사이즈는 지정이 안되는 건가요?
아니면 따로 지정을 안하면 프린터 설정을 따르는 건가요?
그리고 프린터에 따라서 여백설정이 안먹히는 경우도 있나요?
HP 프린터를 쓰는데 여백이 0셋을 해도 프린터 설정의 여백으로 나오네요.
뭐 그건 ScriptX도 마찬가지 입니다만.. ^^
아 그리고 Clean() 메쏘드의 문제점이 좀 있었는데.. 그건 조금더 확인해서 말씀드릴께요.
확인해보니 IE8에서는 설치가 안되네요..
해결되면 새 버전 배포하겠습니다.
언제 해결될지는 장담할 수 없습니다.
홍정모
2009/08/13 17:28
위에도 언급된 글이 있는데 컴퓨터의 국가 설정에 길이단위가 인치로 되어있건 미터로 되어있건 mm로 여백설정에 되는 기능이 있었으면 좋겠습니다. 여백을 15로 설정했는데 업체 pc중 일부 pc에서 오류가 나서 보니깐 국가별 설정에서 길이 단위를 인치로 해 놓았더군요. 15인치 여백을 주려니깐 오류가 난겁니다. 일부 외국계 업체의 경우 외국인이 쓰는 PC는 일부러 인치로 설정된 경우도 있으니 이 기능이 필요할 것 같습니다. 아니면 적어도 여백단위가 인치인지 밀리미터인지를 알아낼 방법만이라도 있었으면 좋겠습니다.
GetPrinters() 를 이용한 프린터 선택 팁,(이라고 할 수 있을지...)
예전에 이슬님께 큰 도움을 받은 녀석입니다, 덕분에 잘 해결되서 지금은 거의 마무리가 되어가네요,
저희 회사 환경이 넷프린터와 로컬프린터를 같이 쓰기에 조금은 불편한게 있었네요.
프린터를 선택해서 웹 전용인쇄를 생각해 봤는데요,
혹시나 필요하신 분이 계시면, 혹시나 더 좋은 방법이 있으신 분은 공유했으면 합니다.
일단 GetPrinters()로 프린터 리스트를 뽑아오는데, 여기서 스트링으로 받아오기에
자바스크립트 명령어인 escape(IEPageSetupX.GetPrinters()) 하게 되면
공백과 특수기호가 ASCII 코드로 변환된 문자열로 받을수 있습니다.
그냥, alert()하게 되면 콤마(,) 와 줄바꿈으로 구분되어져 나오더라구요,
alert(IEPageSetupX.GetPrinters())해보니 특수기호 "%0D%0A" 가 프린터 이름 사이사이에 있더라구요,
(EditPlus -> 클립텍스트 -> Control Character 에서 보니까 LineFeed(엔터)와 CR(은 뭔지,,,콤마인가?)이라고 나오네요)
그걸 split("%0D%0A") 하게 되면 정확히 프린터 이름을 뽑을수 있구요,
이걸 다시 unescape하면 완벽한 프린터 이름을 뽑아서 지정해줄 수 있었습니다.
풀이 하면,
array printer_list = escape(IEPageSetupX.GetPrinters()).split(("%0D%0A");
IEPageSetupX.Printer = unescape(printer_list[x]);
사용하실 때 unescape(printer_list[x]) 하시면 되겠습니다.
제 경우에선 웹페이지에서 쿠키생성이 안되서 Ajax로 DB에 저장했다가 페이지 오픈할때 긁어오게 했습니다.
DB에 저장된 프린터 이름하고 현재 설치되어 있는 프린터와 비교해서 없으면
프린터 리스트 불러와서 선택(DB저장까지)하는 부분을 만들어줬구요,
안녕하세요...
예전에 질문 주셨던 글을 보니 기억이 나네요..
팁까지 올려주시고 고맙습니다.
GetPrinters()하게 되면 구분자로 %0D%0A가 맞습니다.
16진수로는 0x13, 0x10이죠..
Carriage Return(0x13), Line Feed(0x10)입니다.
Carriage Return은 현재 줄의 제일 처음 위치로 커서를 이동시키는 것이고, Line Feed는 한 줄 내리는 기능을 합니다.
보통 줄바꿈을 CR+LF로 처리합니다.
고맙습니다^^
장길삼
2009/10/13 10:56
안녕하세요. 이런걸 물어봐도 될진모르겠는데요
C#(웹어플)에서 인쇄할때 이슬님의 프로그램을 추가해서 출력하려고 하거든요
그래서 오브젝트 설정하고 속성설정(머릿말, 꼬릿말, 여백등), 인스톨 확인등 다른것들은되는데
메소드만 호출하면 오류메세지
///////////////////////////////////////////////
에러 코드: 102
에러 메시지: body 객체의 onload 이벤트에서 IEPageSetupX의 속성/메소드를 호출하여 주십시오.
//////////////////////////////////////////////
라고 나오거든요.
이상해서 html에을 실행해봤는데 html은 잘 실행되구요
c#이랑 연동해서 할려니까 이런 오류가나오는데 혹시 저같은 오류난다고 하시는분 없으셨나요?
그리고 해결방법이 있다면 좀 ㅎㅎ 알려주세요
장길삼
2009/10/13 11:13
아 물론 body에서 직접 IEPageSetupX.Preview();도 실행해봤구
함수로 따로 처리도 해봤는데 모두 같은 메세지입니다.ㅠㅠ
<script>
function Installed()
{
try
{
return (new ActiveXObject('IEPageSetupX.IEPageSetup'));
}
catch (e)
{
return false;
}
}
function PrintTest()
{
if (!Installed())
alert("컨트롤이 설치되지 않았습니다. 정상적으로 인쇄되지 않을 수 있습니다.")
else
alert("정상적으로 설치되었습니다.");
}
function preview()
{
IEPageSetupX.Preview();
}
</script>
</HEAD>
<body MS_POSITIONING="GridLayout" onload = "preview();">
<form id="Form1" method="post" runat="server">
<FONT face="굴림"></FONT>
</form>
</body>
</HTML>
////////////////////////////////////////////////////////////////////
소스 형태는 이런형태입니다. 정말간단하죠? 그냥 처음에 로드되자말자 preview를 띄우는건데요
위에에러 메세지가 나와서 처리하기가;;;
파일을 보내드릴려고해도 주소를 알수가 없어서 보내드릴방법이없네요;;
주소알려주시면 파일보내드리겠습니다.
.net 설치만 되어계시면 열어보시는데는 문제 없으실껍니다..
장길삼
2009/10/13 17:28
아..해결됐습니다....
오브젝트 선언하는곳 위치가 문제였군요;;;
이런삽질을..;;;;;;
아 안녕하세요 이것저것 테스트하다가 발견한점이랑 궁금한게 있어서 질문드립니다. 하핫;;
우선 발견한게
<style type="text/css">
BODY { DISPLAY: none; VISIBILITY: hidden }
</style>
위의 구문처럼 BODY STYLE이 들어가있는경우 위의 저 경우처럼 오브젝트 오류(오류102)가 납니다
사용하시는분들은 유의하셔야할꺼같군요(아니면 대략 낭패인데;;)
그리고 궁금한점은
미리보기를 했을때 [닫기]버튼을 눌러서 종료하면
부모의 창까지 닫을수가 있는데요
윈도우 종료창(x)을 선택시 아무런 이벤트 없이 끝나버려서 이걸눌러도 부모창까지 닫히게 할수있는
방법은 없을까 해서 질문드립니다.
미리보기에서 "닫기" 버튼 클릭으로 부모창까지 닫게 했다는 것이 어떻게 하셨는지 모르겠네요..
샘플 코드를 알려주시거나 테스트할 수 있는 URL을 알려주시면 확인해보겠습니다.
장길삼
2009/10/19 09:44
미리보기에서 "닫기" 버튼을 클릭해서 부모창을 닫는것은
IEPageSetupX.Preview();
window.close();
이렇게 처리를 했거든요
이렇게 처리하면 닫기버튼을 눌렀을때 부모창은 같이 닫히는데
위의 윈도우창 닫기(x)는 해결방법이 없네요...
이벤트 자체가 없는것 같기도 하구요..
동시에 안먹네요...
특히나
IEPageSetupX.ShrinkToFit = true; 의 경우 실행 안될 경우가 있습니다. 창이 뜨는 딜레이 때문인지; 몰라도
그리고
IEPageSetupX.CloseIE = true;의 경우 IEPageSetupX.CloseIE; 이렇게도 써보고... 저렇게도 써보고 다 해봐도
창이 안닫히네요 ㅠㅠ
안녕하세요.
IEPageSetupX를 만든 프로그램에서 직접 제어하지 마시고,
일반 웹 페이지에서 하는 것처럼 HTML 코드 내에서 사용되도록 구성 하세요.
그리고, IEPageSetupX를 이용하는 특정 자바스크립트 함수를 만들고,
만드신 프로그램에서 WebBrowser1에 접근하여 그 함수를 호출하는 방법으로 사용하시면 될것 같습니다.
woobang
2010/02/28 04:12
바로위에 글을 올렸던 사람입니다.
말씀하신대로 ocx를 html에서직접실행하는것은 문제가 없습니다.
헌데, 약간의 문제점이 html에서 용지방향설정변경후에 html상에서 미리보기 or 인쇄명령을 내린후에 적용된다는 점입니다.
단순히 페이지 로딩시에 용지방향설정만 바꾼상태에서 vb에서 브라우저컨트롤에 인쇄명령을 내리면 용지방향이 안바껴있다는거죠.
인쇄버튼이 HTML내에 있을수 없기 때문에 그렇습니다.
Html 페이지를 로딩하자마자 미리보기를 뛰우는것도 바람직하지 못한 상황이라 그렇습니다.
결론은, html이 아닌 VB에서 용지설정을 직접 바꾸는방법이 필요합니다.
그리고 그부분에 대해서 도움을 주실수 있는지요?
다른 버튼은 웹 페이지가 오픈된 상태에서 클릭 시 아래 코드처럼 사용하시면 됩니다.
wb1.OleObject.Document.getElementById('IEPageSetupX').Orientation := 0;
wb1.OleObject.Document.getElementById('IEPageSetupX').Preview;
위와 같이하면 일반 App에서 웹 페이지를 오픈하고, 용지 방향을 '가로'로 설정하고, 미리보기 창을 열게 됩니다.
일반 App에서 WebBrowser를 이용하면 일반 웹페이지 내에서 호출하는 것처럼 모든 것을 제어할 수 있습니다.
쎄이
2010/03/02 18:35
혹시 양면인쇄가 가능할까요?
프린터가 지원하고 기본설정이 양면이면 인쇄할때 양면인쇄가 가능하게 할 수있나요?
아니면 프린터가 지원하고 기본설정이 한면인쇄일때 양면인쇄가 가능하게 할 수있는지요?
좋은 프로그램 감사합니다.