You cannot see this page without javascript.

meadco print

Programing 조회 수 4276 추천 수 0 2013.12.12 15:10:19

<예제>
<html>

<head>
<object id=factory viewastext style="display:none" classid="clsid:1663ed61-23eb-11d2-b92f-008048fdd814"  codebase="ScriptX.cab#Version=6,1,432,1">

</object>

</head>

 

<script language="JavaScript">
function window.onload()

{
   factory.printing.header = "여백주기 테스트 머리말";   // Header에 들어갈 문장
   factory.printing.footer = "여백주기 테스트 꼬리말 - &p/&P -"; // Footer에 들어갈 문장
   factory.printing.topMargin = 20;      // 위 여백  

   factory.printing.leftMargin = 30;      // 왼쪽 여백  

   factory.printing.rightMargin = 5;     // 오른쪽 여백  

   factory.printing.bottomMargin = 5;   //아래 여백
   factory.printing.portrait = false;       // true 면 가로인쇄, false 면 세로 인쇄
   factory.printing.SetMarginMeasure(2); // 테두리 여백 사이즈 단위를 인치로 설정
   factory.printing.printer = "HP DeskJet 870C";  // 프린트 할 프린터 이름
   factory.printing.paperSize = "A4";   // 용지 사이즈
   factory.printing.paperSource = "Manual feed";   // 종이 Feed 방식
   factory.printing.collate = true;   //  순서대로 출력하기
   factory.printing.copies = 2;   // 인쇄할 매수
   factory.printing.SetPageRange(false, 1, 3); // True로 설정하고 1, 3이면 1페이지에서 3페이지까지 출력


}

 

function print(){
   window.print();
}


</script>

<body>
<table width=100% border=1>
   <tr>
      <td> <input type=button value='출력' onclick=print();> </td>
   </tr>
</table>
</body>
</html>

 

위 HTML을 브라우저로 실행시키고

웹프라우저의 파일-> 인쇄미리보기를 보면 머리말, 꼬리말, 여백이 적용된 것을 볼 수 있음

 

자세한사항은

http://www.meadroid.com/scriptx/index.asp

http://www.meadroid.com/scriptx/docs/printdoc.htm

 

[머리말 꼬리말 옵션]

&w : 웹페이지의 제목

&b : 간격을 띄어주는 효과

&p / &P : 인쇄 페이지  (현재페이지/총페이지)
&u : 웹페이지의 주소

&d : 현재의 날짜

 

[컴포넌트를 나의 웹서버에 놓고 사용하고 싶다면...]

1. http://www.meadroid.com/scriptx/sxdownload.asp  에서 ScriptX.Cab를 download
2. 웹서버에 upload

   http://www.eqsms.co.kr/ActiveX/ 에 올렸다면

<object id=factory viewastext style="display:none" classid="clsid:1663ed61-23eb-11d2-b92f-008048fdd814"  codebase="http://www.eqsms.co.kr/ActiveX/ScriptX.cab#Version=6,1,431,2">

</object>

이렇게 codebase의 경로를 실제 웹서버로 변경하면 됨

 

혹시 smsx.cab가 다운받아지면.. scriptx 대신 smsx 를 사용하면 됨

 

 

 

 

 

 

<html>
 <head>
  <title> :: 프린터 :: </title>
  <script language="javascript" type="text/javascript" SRC="/common/js/prototype.js"></script>
  <script language="javascript" type="text/javascript" SRC="/common/js/base.js"></script>  
  <script language="javascript" type="text/javascript" SRC="/common/js/functions.js"></script>

<style media="print">
  .noprint     { display: none }
</style>

 </head>

 

<body bgcolor="#FFFFFF" text="#000000" leftmargin="0" topmargin="0" marginwidth="0" marginheight="0" >

<object id="factory" style="display:none" viewastext classid="clsid:1663ed61-23eb-11d2-b92f-008048fdd814" codebase="/ScriptX.cab#Version=6,2,433,14"> </object>
<script defer>
/*[ScriptX 라이센스 관련 내용 요약]


● 라이센스 기간 및 금액
* 1년 : 350$(한화 : 약420,000원)
* 2년 : 5% 할인
* 3년 : 10% 할인

* 11년 : 50% 할인 (최대 50%할인 가능)

※ 기본이 1년이며, 일반적인 구매범위는 2-5년 정도임


● 라이센스 범위
* 라이센스 1개당 10개의 IP에서 사용가능함


● 추가비용이 들어가는 기능
① 사용가능한 IP개수를 늘리는 기능
② 클라이언트 사용자에게 확인을 받지 않고 바로 ScriptX를 사용할 수 있게 만드는 기능
③ 적용 IP 범위를 넓히고 싶은 경우
④ 인쇄 장수를 선택하는 기능
⑤ 미리보기에서 출력형태를 변경하는 기능
⑥ 출력범위를 지정하는 기능
⑦ 출력페이지 크기에 맞게 최적화되어 출력되는 기능
⑧ 머리말과 꼬리말을 다양하게 출력하는 기능
*/
function printWindow() {
  if (!factory.object) {
  return
  } else {
 
  //무료기능 
  factory.printing.header = ""; //윗쪽타이틀
  factory.printing.footer = ""; //아랫쪽타이틀
  factory.printing.portrait = false; //인쇄레이아웃설정, 가로(false), 세로(true)
  factory.printing.leftMargin = 0.5; //왼쪽여백
  factory.printing.topMargin = 0.5;//윗쪽여백
  factory.printing.rightMargin = 0.5; //오른쪽여백
  factory.printing.bottomMargin = 0.5; //아랫쪽여백
  //유료기능 
  //factory.printing.paperSize = "A4";      // 용지 사이즈
  //factory.printing.paperSource = "Manual feed";   // 종이 Feed 방식
  //factory.printing.copies = 1; // 인쇄할 매수
  //factory.printing.SetPageRange(false, 1, 3); // True로 설정하고 1, 3이면 1페이지에서 3페이지까지 출력
  // factory.printing.printBackground = false; // 백그라운드까지 출력 
  //factory.printing.SetMarginMeasure(2); // 테두리 여백 사이즈 단위를 인치로 설정합니다.
  //factory.printing.printer = "SINDORICOH LP-1800";  // 프린트 할 프린터 이름 -->신도리코

  //프린터실행
  factory.printing.Print(true, window); //print with prompt

  // enable control buttons
  var templateSupported = factory.printing.IsTemplateSupported();
  var controls = idControls.all.tags("input");
  for ( i = 0; i < controls.length; i++ ) {
    controls[i].disabled = false;
    if ( templateSupported && controls[i].className == "ie55" )
      controls[i].style.display = "inline";
    }
  }
}

function printWindowPriview() {
  if (!factory.object) {
  return
  } else {
 
  //무료기능 
  factory.printing.header = ""; //윗쪽타이틀
  factory.printing.footer = ""; //아랫쪽타이틀
  factory.printing.portrait = false; //인쇄레이아웃설정, 가로(false), 세로(true)
  factory.printing.leftMargin = 0.5; //왼쪽여백
  factory.printing.topMargin = 0.5;//윗쪽여백
  factory.printing.rightMargin = 0.5; //오른쪽여백
  factory.printing.bottomMargin = 0.5; //아랫쪽여백
  //유료기능 
  //factory.printing.paperSize = "A4";      // 용지 사이즈
  //factory.printing.paperSource = "Manual feed";   // 종이 Feed 방식
  //factory.printing.copies = 1; // 인쇄할 매수
  //factory.printing.SetPageRange(false, 1, 3); // True로 설정하고 1, 3이면 1페이지에서 3페이지까지 출력
  // factory.printing.printBackground = false; // 백그라운드까지 출력 
  //factory.printing.SetMarginMeasure(2); // 테두리 여백 사이즈 단위를 인치로 설정합니다.
  //factory.printing.printer = "SINDORICOH LP-1800";  // 프린트 할 프린터 이름 -->신도리코

  //미리보기실행
  factory.printing.Preview();

  // enable control buttons
  var templateSupported = factory.printing.IsTemplateSupported();
  var controls = idControls.all.tags("input");
  for ( i = 0; i < controls.length; i++ ) {
    controls[i].disabled = false;
    if ( templateSupported && controls[i].className == "ie55" )
      controls[i].style.display = "inline";
    }
  }
}

function printPageSetup() {
  if (!factory.object) {
  return
  } else {
 
  //무료기능 
  factory.printing.header = ""; //윗쪽타이틀
  factory.printing.footer = ""; //아랫쪽타이틀
  factory.printing.portrait = false; //인쇄레이아웃설정, 가로(false), 세로(true)
  factory.printing.leftMargin = 0.5; //왼쪽여백
  factory.printing.topMargin = 0.5;//윗쪽여백
  factory.printing.rightMargin = 0.5; //오른쪽여백
  factory.printing.bottomMargin = 0.5; //아랫쪽여백
  //유료기능 
  //factory.printing.paperSize = "A4";      // 용지 사이즈
  //factory.printing.paperSource = "Manual feed";   // 종이 Feed 방식
  //factory.printing.copies = 1; // 인쇄할 매수
  //factory.printing.SetPageRange(false, 1, 3); // True로 설정하고 1, 3이면 1페이지에서 3페이지까지 출력
  // factory.printing.printBackground = false; // 백그라운드까지 출력 
  //factory.printing.SetMarginMeasure(2); // 테두리 여백 사이즈 단위를 인치로 설정합니다.
  //factory.printing.printer = "SINDORICOH LP-1800";  // 프린트 할 프린터 이름 -->신도리코

  //프린터셋업실행
  factory.printing.PageSetup();

  // enable control buttons
  var templateSupported = factory.printing.IsTemplateSupported();
  var controls = idControls.all.tags("input");
  for ( i = 0; i < controls.length; i++ ) {
    controls[i].disabled = false;
    if ( templateSupported && controls[i].className == "ie55" )
      controls[i].style.display = "inline";
    }
  }
}

 

function displaybtn(){
//인쇄 시 출력하기 이미지 버튼 안보이도록 설정하는 알고리즘
//출력하기 버튼 클릭하면 처음에 출력버튼을 숨겼다가 인쇄 후 0.05초정도 후에 다시 출력하기 버튼 디스플레이한다.
 setTimeout(showprintbtn,50)
}
function showprintbtn(){
//출력하기 버튼 디스플레이
 $('idControls').style.display = "inline";
}
//<p style="page-break-before:always">
//이 태그를 만나면 다음페이지에 인쇄함.
</script>

<form name="printform">
<input type="hidden" name="printed" value="0">

 

<!--이부분에 프맅트내용을 넣으면 됩니다. ---> 

 


</form>

<div id='idControls' class="noprint" style='background: #fff;'>
 <hr size="1" color="dimgray">
 <p>

<!--이부분의 input버튼은 이미지로 이뿌게 꾸미시면 된답니다. ---> 

<input type="button" value="인쇄하기" onclick="$('idControls').style.display='none';printWindow();displaybtn();">
 <input type="button" value="페이지설정" onclick="$('idControls').style.display='none';printPageSetup();displaybtn();">
 <input class=ie55 type="button" value="인쇄 미리보기" onclick="$('idControls').style.display='none';printWindowPriview();displaybtn();">
</div>
</body>
</html>

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

MeadCo 사에서 제공하는 ScriptX 에 대한 보다 더 자세한 설명입니다.


이 방법을 사용하시면 웹사이트에서 인쇄를 할때...

 

1. Header, Footer를 완벽히 제어할수 있습니다. Header, Footer를 빼고 인쇄할수도 있고 자기가 원하는 것으로 바꿔서 인쇄할 수도 있습니다.

2. 코딩으로도 화면을 가로로 인쇄할지 세로로 인쇄할지 설정할수 있습니다.

3. 웹브라우저에 기본으로 되어있는 건 언제나 1부씩 출력이죠.... 이것을 자기가 원하는 부수로 설정할 수 있습니다.

4. 왼쪽, 오른쪽, 위, 아래 여백 사이즈를 자기가 원하는데로 설정할 수 있습니다.

5. 프린터 이름을 입력해 어느 프린터로 출력 할지도 미리 설정할 수 있습니다.

6. 종이의 종류를 A4로 할지 다른걸로 할지등을 지정할 수 있습니다.

7. Manual Feed로 할지 Auto Feed로 할지 지정할 수 있습니다.

 

어떠세요. 이 정도 기능을 웹페이지 안의 코딩으로 미리 다 설정이 가능하다면 더 이상 웹어플리케이션 개발할때 봉착하는 프린트 제어 기능 문제는 겪지 않으시겠죠?

 

MeadCo라는 회사에서 개발한 ScriptX 라는 컴포넌트가 있습니다. 이것을 사용하는 것입니다.
물론 무료로 사용 가능하구요. Cab 파일 형태로 제공됨으로 서버에 설치하지 않고 클라이언트 컴터에 설치하여 쓸수 있습니다. 여러분들 어떤 사이트를 방문하면 팝업이 뜨면서 0000 가 배포하는 000 프로그램을 설치하겠나는 메세지 많이들 보셨죠? '예'를 선택하면 자동으로 그 프로그램이 설치되고 해당하는 웹페이지의 기능들을 쓸수 있었잖아요. 이게 바로 그겁니다.

 

1.
우선 MeadCo 사의 웹사이트에서 ScriptX.Cab을 다운 받으세요.
이름(First Name), 성(Last Name), 이메일 주소를 입력하면 무료로 다운 받으실 수 있습니다.

http://www.meadroid.com/scriptx/sxdownload.asp

2.
다운받은 ScriptX.CAB 파일을 본인 웹서버의 원하는 곳에 업로드 시키세요.
http://www.test.com/ActiveX/ScriptX.cab 에 올렸다고 가정하죠.

3.
이제 인쇄기능이 필요한 웹이지 안에 다음의 오브젝트 태그를 삽입하세요.

<object id="factory" style="display:none" viewastext classid="clsid:1663ed61-23eb-11d2-b92f-008048fdd814" codebase="http://www.test.com/ActiveX/ScriptX.cab#Version=6,1,431,2"></object>

여기는 게시판이라 짤려서 3줄이 됐지만 짤리지 않게 두줄로 삽입하세요.

4.
이제 준비 끝입니다. 다음의 설정 스크립트를 삽입합니다.

<script defer>
function Print() {
  factory.printing.header = "영수증 원본";   // Header에 들어갈 문장
  factory.printing.footer = "감사합니다.";   // Footer에 들어갈 문장
  factory.printing.portrait = false   // true 면 가로인쇄, false 면 세로 인쇄
  factory.printing.leftMargin = 1.0   // 왼쪽 여백 사이즈
  factory.printing.topMargin = 1.0   // 위 여백 사이즈
  factory.printing.rightMargin = 1.0  // 오른쪽 여백 사이즈
  factory.printing.bottomMargin = 1.0  // 아래 여백 사이즈
  factory.printing.SetMarginMeasure(2); // 테두리 여백 사이즈 단위를 인치로 설정합니다.
  factory.printing.printer = "HP DeskJet 870C";  // 프린트 할 프린터 이름
  factory.printing.paperSize = "A4";   // 용지 사이즈
  factory.printing.paperSource = "Manual feed";   // 종이 Feed 방식
  factory.printing.collate = true;   //  순서대로 출력하기
  factory.printing.copies = 2;   // 인쇄할 매수
  factory.printing.SetPageRange(false, 1, 3); // True로 설정하고 1, 3이면 1페이지에서 3페이지까지 출력
  factory.printing.Print(true) // 출력하기
}
</script>

 

이제 버튼 하나 만들어서 Print() 만 호출하면 위에 설정된 구성들로 프린트가 될것입니다.

만일 폼값을 받아 위의 설정값들을 변경하려면frm = document.forms[0]; 처럼 폼 다큐먼트를 설정해 준 후document.factory.printing.copies = frm.CopiesValue.value;   처럼 그 값을 받아오면 됩니다.












웹페이지 인쇄시 프린터 제어하기손님 http://flashcafe.org/122702006.09.18 22:06:00 2306http://cafe.naver.com/q69/48423




웹사이트를 제작할때
많은 사용자가 프린터를 어떻게 지원할것인가 고민하게 된다,
그리고 대부분 프로그램머는 자바스크립트에서 제공하는 print() 메서드를 사용해서 프린트하게 된다.
이는 간단하고 사용하기는 쉽지만, 제어기능은 별로 없는게 흠이다.

window.top.print();

또한 이 메서드를 사용하면 항상 프린트 대화상자가 뜨는 것과 인쇄되는 페이지의 헤더와 풋터를 제어할 수 없다는 단점이 있다.


아쉽게도 우리가 알고있는 자바스크립트나 ASP로는 이를 제어할 수 없다.
다른 프로그래밍 언어나 activeX 를 사용하여 프린터를 직접 제어하도록 컴포넌트를 만들어 사용해야 하는데, 이것을 직접 만든다는것도 어렵고 성가신 일 중의 하나인것은 분명하다.

자유롭게 참조해서 쓸수 있는 프린트 컴포넌트를 사용하는 방법이 있다.
MeadCo에서 만든 ScriptX라는 컴포넌트인데,  이 컴포넌트를 클라이언트에서 직접 참조하여 사용할 수 있고 또한 다운을 받아서 자신의 서버에 설치(서버 관리자라면)하여 사용할 수 있다.

여기서는 클라이언트에서 직접 참조하여 사용하는 것에 대해서 보겠다.

당연한 말이지만
컴포넌트를 참조하긴 위해선 항상 HTML문서안에 개체를 추가해 주어야 한다.


< !-- MeadCo ScriptX -->
< object id=factory style="display:none"
classid="clsid:1663ed61-23eb-11d2-b92f-008048fdd814"
codebase="http://www.meadroid.com/scriptx/ScriptX.cab#Version=6,1,429,14">
< /object>



위의 코드를  HTML 문서에 삽입하면 MeadCo 사이트의 ScriptX 개체를 참조하게 된다.
( 이것은 클라이언트측에서 참조되고, 구동되기 때문에 ASP 에서나 CreateObject 를 사용하지 않고 , 또한 클라이언트 스크립트에서 new ActiveXObject를 호출하지 않는다.)

이제 이를 호출하여 프린트하는 스크립트를 추가한다.


< script>
function printWindow() {
factory.printing.header = "This is MeadCo"
factory.printing.footer = "Printing by ScriptX 5.x"
factory.printing.portrait = false
factory.printing.leftMargin = 1.0
factory.printing.topMargin = 1.0
factory.printing.rightMargin = 1.0
factory.printing.bottomMargin = 1.0
factory.printing.Print(false, window)
}
< /script>





header는 페이지 상단에 인쇄되는 부분이며
footer는 페이지 하단에 인쇄되는 부분을 말한다.
portrait을 false로 하면 가로 출력이되며 true로 하면 세로 출력을 한다.

아래 4개의 옵션은 상하좌우의 여백을 조정하며 Print 메서드에서 첫번째 인수는 프린트 대화상자를 표시할 것인지를 나타내는 것으로 false로 되어있는 경우 대화상자를 표시하지 않고 기본 프린터로 바로 출력 하게 된다.
두번째 인수는 전체 HTML 페이지를 인쇄할 것인지 아니면 특정 프레임을 출력할 것인지를 설정한다.

기타 다른 기술적인 부분에 대해서는 MeadCo의 Tech Docs 부분을 참고하기 바란다.
미리보기의 예제는 실제 이 컴포넌트를 사용하여서 프린트할 수 있는 예제이다











<HTML>
< HEAD>
< TITLE>happyscript.com</TITLE>
< /HEAD>



< script language="javascript">
// http://happyscript.com
function printWindow() {
factory.printing.header = "머릿글로 출력되는 부분입니다."
factory.printing.footer = "바닥글로 출력되는 부분입니다."
factory.printing.portrait = true
factory.printing.leftMargin = 30.0
factory.printing.topMargin = 30.0
factory.printing.rightMargin = 30.0
factory.printing.bottomMargin = 30.0
factory.printing.Print(false, window)
}
< /script>



< BODY>
< object id=factory style="display:none" classid="clsid:1663ed61-23eb-11d2-b92f-008048fdd814" codebase="http://www.meadroid.com/scriptx/ScriptX.cab#Version=6,1,429,14">
< /object>
< p>
프린팅 테스트
</p>
< p>
웹페이지의 프린트 제어 <br>
http://happyscript.com
< /p>
< input type="button" name="print" value="Print This Page..." onClick="printWindow();">
< /BODY>
< /HTML>



http://flashcafe.org/122712006.09.18 22:07:00 2239http://cafe.naver.com/q69/48424
MeadCo 사에서 제공하는 ScriptX 에 대한 보다 더 자세한 설명입니다.


이 방법을 사용하시면 웹사이트에서 인쇄를 할때...







1. Header, Footer를 완벽히 제어할수 있습니다. Header, Footer를 빼고 인쇄할수도 있고 자기가 원하는 것으로 바꿔서 인쇄할 수도 있습니다.



2. 코딩으로도 화면을 가로로 인쇄할지 세로로 인쇄할지 설정할수 있습니다.



3. 웹브라우저에 기본으로 되어있는 건 언제나 1부씩 출력이죠.... 이것을 자기가 원하는 부수로 설정할 수 있습니다.



4. 왼쪽, 오른쪽, 위, 아래 여백 사이즈를 자기가 원하는데로 설정할 수 있습니다.



5. 프린터 이름을 입력해 어느 프린터로 출력 할지도 미리 설정할 수 있습니다.



6. 종이의 종류를 A4로 할지 다른걸로 할지등을 지정할 수 있습니다.



7. Manual Feed로 할지 Auto Feed로 할지 지정할 수 있습니다.







어떠세요. 이 정도 기능을 웹페이지 안의 코딩으로 미리 다 설정이 가능하다면 더 이상 웹어플리케이션 개발할때 봉착하는 프린트 제어 기능 문제는 겪지 않으시겠죠?







MeadCo라는 회사에서 개발한 ScriptX 라는 컴포넌트가 있습니다. 이것을 사용하는 것입니다.
물론 무료로 사용 가능하구요. Cab 파일 형태로 제공됨으로 서버에 설치하지 않고 클라이언트 컴터에 설치하여 쓸수 있습니다. 여러분들 어떤 사이트를 방문하면 팝업이 뜨면서 0000 가 배포하는 000 프로그램을 설치하겠나는 메세지 많이들 보셨죠? '예'를 선택하면 자동으로 그 프로그램이 설치되고 해당하는 웹페이지의 기능들을 쓸수 있었잖아요. 이게 바로 그겁니다.







1.
우선 MeadCo 사의 웹사이트에서 ScriptX.Cab을 다운 받으세요.
이름(First Name), 성(Last Name), 이메일 주소를 입력하면 무료로 다운 받으실 수 있습니다.



http://www.meadroid.com/scriptx/sxdownload.asp



2.
다운받은 ScriptX.CAB 파일을 본인 웹서버의 원하는 곳에 업로드 시키세요.
http://www.test.com/ActiveX/ScriptX.cab 에 올렸다고 가정하죠.



3.
이제 인쇄기능이 필요한 웹이지 안에 다음의 오브젝트 태그를 삽입하세요.



< object id="factory" style="display:none" viewastext classid="clsid:1663ed61-23eb-11d2-b92f-008048fdd814" codebase="http://www.test.com/ActiveX/ScriptX.cab#Version=6,1,431,2"></object>



여기는 게시판이라 짤려서 3줄이 됐지만 짤리지 않게 두줄로 삽입하세요.



4.
이제 준비 끝입니다. 다음의 설정 스크립트를 삽입합니다.



< script defer>
function Print() {
  factory.printing.header = "영수증 원본";   // Header에 들어갈 문장
  factory.printing.footer = "감사합니다.";   // Footer에 들어갈 문장
  factory.printing.portrait = false   // true 면 가로인쇄, false 면 세로 인쇄
  factory.printing.leftMargin = 1.0   // 왼쪽 여백 사이즈
  factory.printing.topMargin = 1.0   // 위 여백 사이즈
  factory.printing.rightMargin = 1.0  // 오른쪽 여백 사이즈
  factory.printing.bottomMargin = 1.0  // 아래 여백 사이즈
  factory.printing.SetMarginMeasure(2); // 테두리 여백 사이즈 단위를 인치로 설정합니다.
  factory.printing.printer = "HP DeskJet 870C";  // 프린트 할 프린터 이름
  factory.printing.paperSize = "A4";   // 용지 사이즈
  factory.printing.paperSource = "Manual feed";   // 종이 Feed 방식
  factory.printing.collate = true;   //  순서대로 출력하기
  factory.printing.copies = 2;   // 인쇄할 매수
  factory.printing.SetPageRange(false, 1, 3); // True로 설정하고 1, 3이면 1페이지에서 3페이지까지 출력
  factory.printing.Print(true) // 출력하기
}
< /script>







이제 버튼 하나 만들어서 Print() 만 호출하면 위에 설정된 구성들로 프린트가 될것입니다.



만일 폼값을 받아 위의 설정값들을 변경하려면frm = document.forms[0]; 처럼 폼 다큐먼트를 설정해 준 후document.factory.printing.copies = frm.CopiesValue.value;   처럼 그 값을 받아오면 됩니다.

 

 

 

 

 

 

 

웹개발을 하다 보면 웹페이지를 출력해야 할때가 많다.

하지만 다음 문제로 인해 원하는 페이지를 얻지 못 할때 사용하는 유용한 무료 기능을 소개 하고자 한다.


1. 위아래 나오는 URL을 자동으로 지우기 위해!

2. 페이지의 상하좌우 여백을 원하는대로 조절하기 위해!!


우선, script-xX.cab 이라는 ActiveX를 사용해야 한다. 자바스크립트로는 웹브라우져를 컨트롤 할 수 없기 때문이다.
다운은 아래 사이트에 가면 받을수 있다.

http://www.meadroid.com/script-xx/sxdownload.asp

설치를 하고나면 smsx.cab / smsx.exe 두개의 파일을 볼수가 있다.

smsx.cab : 웹에서 자동 다운로드 설치를 위한 파일
smsx.exe : 수동설치를 위한 설치 파일

우선 smsx.cab을 웹서버 디렉토리에 올리고 나서 유저가 접속햇을때 이를 설치하도록 유도를 하게 하면 된다.

태그 안에 삽입.

  1. classid="clsid:1663ed61-23eb-11d2-b92f-008048fdd814"
  1. codebase="http://[설치경로]/smsx.cab#Version=6,5,439,30">



- 설정을 위한 script-x 부분

  1. function printWindow() {
  2. /*
  3. factory.printing.SetMarginMeasure(2); // set inches*/
  4. factory.printing.header = "This is MeadCo";
  5. factory.printing.footer = "Printing by script-xX";
  6. factory.printing.portrait = false;
  7. factory.printing.leftMargin = 1.0;
  8. factory.printing.topMargin = 1.0;
  9. factory.printing.rightMargin = 1.0;
  10. factory.printing.bottomMargin = 1.0;
  11. // factory.printing.copies = 1;
  12. // factory.printing.printBackground = true;
  13. factory.printing.Print(false);
  14. /* factory.printing.WaitForSpoolingComplete();
  15. */
  16. // navigate or close browser here //
  17. }


=> 여기서 봤을 때, 주석으로 된것은 유료이다. 주석을 풀고 실행을 하게 되면 라이센스가 어쩌거 저쩌고라고 에러를 뱉어내게 된다.
간단한 기능만으로도 충분하니 잘 사용할 수 잇을 것이다.


- 실행을 위한 버튼 삽입부분

  1. <input type="button" name="print" value="출력" onClick="printWindow();">




이상. 이렇게 하면 편하게 출력을 위한 페이지를 만들 수가 잇을 것이다.

아.. 두시간동안 삽질을 하여 얻은 것이다. 혹시 이런 걸 만들 기회가 생긴다면 많은 도움이 되었으면 좋겟다. ^^
난 또 언제나 코딩질~~~ ^^

 

 

 

 

 

 

 

 

 

 

 

///////////////////////////////////////////////////////////////////////////////////////

웹사이트 방문자에게 견적서 등을 제공하는 인터넷 페이지가 있다고 하자.
개 발자(혹은 디자이너)라면 그 페이지를 javascript로 print할때, header나 footer를 통제하지 못하는 것에 안타까움을 느낄 것이다.  또 가로로 출력되어야 하는데, 세로 출력이 되어 내용이 잘리게 되는 것도 안타까웠을 것이다.
또 margin만 조절되면, 한 페이지에 깨끗하게 들어갈텐데 하는 생각도 들었을 것이다.
이 런 프린터 통제 기능은 internet explore 5.5 시절에 제공된 적이 있다고 한다. 그러나 그 이후부터는 제공되지 않는다. 아마 ie5.5도 지금은 그 기능을 제공하지 않을 것이다. 익스플로러 보안 문제가 대두되면서 말이다.
웹사이트를 설계하고 개발하여 서비스를 제공하는 입장에서는 달가운 일은 아니다. 이런 문제를 해결할 수 있는  ActiveX 콤포넌트가 있다. ScriptX.
MeadCo 가 제공하고 있는  ScriptX는 printing과 관련하여 훌륭한 기능(?)과 엄청난 기능(?)을 제공한다. 방문자가 print를 누르면 서버에 연결된 프린터가 출력을 할 수 있도록 하는 기능, 출력 템플릿.... 우리가 printing과 관련하여 상상하는 웬만한 모든 것이 포함되어 있다.
하지만, 모든 것을 무료로 제공하지는 않는다. 무료로 쓸 수 있는 기능은 다음과 같다. (아래 기능이라도 마음에 든다면, 고맙다고 3번 외쳐주자~)
1. javascript의 print와 같은 기능(프린터 고르기 뜨는 화면)
2. page setup 호출
3. print 미리보기 호출
4. header/footer/margins/페이지 방향
5. 프레임을 지정하여 프린트하기
6. 프린터 고르기 창 없이 다리렉트 프린트
http://www.meadroid.com/scriptx/ 를 참고하기 바란다.
참고사항
1. 테스트중 재미있는 일이 있었다. 아무리해도 activeX가 자동설치되지 않는 것이다. newsgroup 에 검색한 결과..
Jeryy Mead 曰
For a number of reasons we have stopped using the file_name ScriptX.cab on 
the site, so it's no longer available for your codebase to point at.

Use smsx.cab instead.

  <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>
로 변경하라는 것이다..
배포하는 Download파일도 document도 어디도 변경이 안된 것이다... 이 문제로 이틀 고생한 것 같다.
2. 이 scriptX의 현재 버전은 인터넷 익스플로러의 설계 변경에 영향을 받지 않고 잘 작동한다.
3. 네이버에 참고할 만한 블로그가 있다. http://blog.naver.com/romeofan/70003122510 를 참조하라! 다만, 해당 글의 <object ~ </object>는 본 포스트를 이용하라. (위 포스트에서 프린터에서 페이지 나눔을 할 수 있도록 하는 <p style="page-break-before:always"> 부분, 그리고, 출력시에는 글꼴과 글자색, 테이블라인을 진하게 하라는 제언은 눈여겨 보기 바란다)
/////////////////////////////////////////////////////////////////////////////////////
*웹 페이지 프린트 관련 작업 설명
리포트 출력 및 브라우져에서 출력을 할경우
ScriptX(http://www.meadroid.com/)라는 컴포넌트를 사용 합니다.

*장점
1. 프린트 설정 화면이 안나오고 바로 출력이 된다.
2. 머릿말과 꼬릿말에 나오는(페이지 타이틀, 페이지 url..) 지저분한 부분이 처리 가능하다

*사용법
1. 우선 body 태그 안에 다음의 코드를 추가 합니다.
<object id=factory style="display:none"
  classid="clsid:1663ed61-23eb-11d2-b92f-008048fdd814"
  codebase="http://www.meadroid.com/scriptx/ScriptX.cab#Version=6,1,432,1">
</object>

2. 다음의 스크립트를 추가 합니다.
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;  //아래쪽 여백 설정
// factory.printing.printBackground = true; //배경이미지 출력 설정:라이센스 필요
 factory.printing.Print(false);   //출력하기
}

3. <body> 시작 태그에 이벤트 삽입
<body onload="printPage();">

*참고사항
1. 페이지를 나누고 싶을때 다음의 style 을 사용하여 나눌수 있다.
   (제공: 천재소녀 이세희 대리)

    <p style="page-break-before:always">
    설명:프린터중 위의 태그를 만나면 다음 페이지로 넘어간다.

2. 현재 설정된 스타일을 사용할경우 글씨가 흐리거나 테이블 라인이 히미하다.
   다음의 스타일을 적용한다.
   (기존 스타일을 지우고, html 태그의 head 사이에 넣는다, 페이지에 따라 각자 설정바람)

    <style type="text/css">
    td,body {font:10pt/1.5 돋움; letter-spacing:-0.8px;}
    </style>

*컴로넌트 설명
www.meadroid.com 라는 회사의 ScriptX라는 activeX 컴포넌트로 상당히 많은 기능이 있으나
무료로 사용할수 있는 기능은 header, footer, portrait, leftMargin, topMargin, rightMargin, bottomMargin
만 사용 가능 하면 그 외의 기능은 라이센스가 필요하다.

/////////////////////////////////////////////////////////////////////////////////////// 

 

 

 

 

 

 

 

 

기능을 정리하자면
1.특정부분인쇄
2.웹페이지 주소안나옴
3.헤더와푸터를 맘대로
4.한페이지가 넘어갈경우 중간에 짤리지 않고 깔끔하게 다음장으로 ;;

<head>
<!-- 헤드사이에 스크립트를 넣습니다. -->
<SCRIPT>
    function pagePrint(Obj) {
        var W = Obj.offsetWidth;        //screen.availWidth;
        var H = Obj.offsetHeight;        //screen.availHeight;
        var features = "menubar=no,toolbar=no,location=no,directories=no,status=no,scrollbars=yes,resizable=yes,width=" + W + ",height=" + H + ",left=0,top=0";
        var PrintPage = window.open("about:blank",Obj.id,features);
        PrintPage.document.open();
        PrintPage.document.write("<html><head><title></title><style type='text/css'>body, tr, td, input, textarea { font-family:굴림; font-size:12px; }</style>n </head>n<body>" + Obj.innerHTML + "n</body></html>");
        PrintPage.document.close();
        PrintPage.document.title = document.domain;
        PrintPage.printWindow(PrintPage.location.reload());
    }
</SCRIPT>
</head>

<!--그리고 인쇄할곳을 찾아서 div 태그로 감싸줍니다.-->
<body>
<table BORDER=1>
    <tr>
        <td>
            인쇄 안할곳<br>
            <a href="javascript:pagePrint(d2)">인쇄 해야할곳만 인쇄하자~!</a>
        </td>
    </tr>
</table>
<DIV ID="d2">
<script>
    function printWindow() {
        factory.printing.header = "헤더의 내용";
        factory.printing.footer = "푸터의 내용";
        factory.printing.portrait = true; //false 로할경우 가로방향으로 출력합니다.
        factory.printing.leftMargin = 20.0;//마진값은 적당하게 주시면 됩니다.
        factory.printing.topMargin = 1.0;
        factory.printing.rightMargin = 1.0;
        factory.printing.bottomMargin = 1.0;
        factory.printing.Print(false);
    }
</script>
<object id=factory style='display:none'  classid='clsid:1663ed61-23eb-11d2-b92f-008048fdd814'  codebase='자기서버에 파일위치/smsx.cab#Version=6,4,438,06'>
</object>
<table BORDER=1>
    <tr>
        <td>
            인쇄 해야할곳!!!!
        </td>
    </tr>
</table>
</DIV>
</body>

이렇게 하시면 인쇄 하기 버튼을 누르시면
새창이뜨면서 인쇄할 영역만 보여지고 인쇄창이 뜨게 됩니다.

 

 

 

 

 

 

 

 

 

 

/* http://www.meadroid.com/scriptx/docs/printdoc.htm 참조

 * http://msdn.microsoft.com/library/default.asp?url=/workshop/browser/hosting/printpreview/reference/reference.asp 참조

 */

//////////// Basic //////////////

<HTML>
<HEAD>
<TITLE>MeadCo 의 ScriptX 예제.</TITLE>
<SCRIPT>
 function printWindow()
 {
  factory.printing.header       = ""
  factory.printing.footer       = ""
  factory.printing.portrait     = true // true 세로출력 , false 가로출력
  factory.printing.leftMargin   = 10
  factory.printing.topMargin    = 10
  factory.printing.rightMargin  = 10
  factory.printing.bottomMargin = 10

  factory.printing.Print( true, window ) // 대화상자 표시여부 / 출력될 프레임명
 }
</SCRIPT>
</HEAD>
<BODY>
<object id=factory viewastext style="display:none"
classid="clsid:1663ed61-23eb-11d2-b92f-008048fdd814"
  codebase="ScriptX.cab#Version=6,1,431,8">
</object>
<A href = "javascript:printWindow()">현재화면 인쇄</A>
</BODY>
</HTML>

 

 

///////// Advanced ///////////////////////////

 

<HTML>
<HEAD>
<TITLE>MeadCo 의 ScriptX 예제.</TITLE>
<SCRIPT>
  function printWindow()
 {
  factory.printing.header       = ""
  factory.printing.footer       = ""
  factory.printing.portrait     = false // true 세로출력 , false 가로출력
  factory.printing.leftMargin   = 10    // 좌측여백
  factory.printing.topMargin    = 10
  factory.printing.rightMargin  = 10
  factory.printing.bottomMargin = 10
  factory.printing.SetMarginMeasure(2); // 테두리 여백 사이즈 단위를 인치로 설정합니다.
 
  factory.printing.printer           = "HP DeskJet 870C";    // 프린트 할 프린터 이름
  factory.printing.paperSize      = "A4";                       // 용지 사이즈
  factory.printing.paperSource  = "Manual feed";         // 종이 Feed 방식
  factory.printing.collate           = true;                       // 순서대로 출력하기
  factory.printing.copies           = 2;                           // 인쇄할 매수
  factory.printing.printBackground = true;
  factory.printing.SetPageRange(false, 1, 3);           // True로 설정하고 1, 3이면 1페이지에서 3페이지까지 출력

  factory.printing.Print()  // 미리보기 

   factory.printing.Print( true, window ) // 대화상자 표시여부 / 출력될 프레임명

   factory.printing.WaitForSpoolingComplete()  // spooling 이 끝날때까지 대기..

 }
</SCRIPT>
</HEAD>
<BODY>
<!-- MeadCo Security Manager - using the evaluation license -->
<object id="secmgr" viewastext style="display:none"
classid="clsid:5445be81-b796-11d2-b931-002018654e2e"
codebase="http://www.meadroid.com/scriptx/smsx.cab#Version=6,2,433,9">
  <param name="GUID" value="{43F98F63-1171-4F66-A648-BFDEC452D3FE}">
  <param name="Path" value="http://www.meadroid.com/scriptx/sxlic.mlf">
  <param name="Revision" value="0">
</object>

<!-- MeadCo ScriptX -->
<object id="factory" viewastext style="display:none"
classid="clsid:1663ed61-23eb-11d2-b92f-008048fdd814">
</object>

<!--  Active X 가 제대로 작동하는지 여부 확인 -->

<script defer>
function window.onload() {
  if ( !factory.object ) {
    alert("MeadCo's ScriptX Control is not properly installed!");
    navigate("scriptx-install-error.htm");
    return;
  }
  if ( !secmgr.object ) {
    alert("MeadCo's Security Manager Control is not properly installed!");
    navigate("secmgr-install-error.htm");
    return;
  }
  if ( !secmgr.validLicense ) {
    alert("The MeadCo Publishing License is invalid or has been declined by the user!");
    navigate("license-error.htm");
    return;
  }
  alert("Ready to script MeadCo's ScriptX!")
}
</script>
<A href = "javascript:printWindow()">현재화면 인쇄</A>
</BODY>
</HTML>

엮인글 :
List of Articles
번호 제목 글쓴이 날짜 조회 수

APM mariadb download origin address

  • LynX
  • 2019-06-19
  • 조회 수 1989

APM What one can and should optimize

  • LynX
  • 2019-06-03
  • 조회 수 1415

CentOS mariadb install

  • LynX
  • 2019-05-31
  • 조회 수 1179

CentOS init mode change

  • LynX
  • 2019-05-30
  • 조회 수 1288

APM ext zip install

  • LynX
  • 2019-02-19
  • 조회 수 1612

APM ext ImageMagick install

  • LynX
  • 2019-02-19
  • 조회 수 511

3D Printer Pronterface(PrintRun) install file

  • LynX
  • 2018-09-13
  • 조회 수 753

CentOS Grub UUID change

  • LynX
  • 2018-08-08
  • 조회 수 867

Linux letsencrypt wildcard

  • LynX
  • 2018-07-26
  • 조회 수 798

Printer cura usb connection

  • LynX
  • 2018-07-06
  • 조회 수 666

CentOS cli 무선랜

  • LynX
  • 2018-06-07
  • 조회 수 446

APM 윈도우에 APM 페키지 설치 file

  • LynX
  • 2018-05-04
  • 조회 수 586

APM MySQLTuner 설치

  • LynX
  • 2018-04-27
  • 조회 수 544

CentOS CentOS7 커널 업데이트

  • LynX
  • 2018-04-23
  • 조회 수 699

HTML Tag CSS 여러가지 모양 만들기

  • LynX
  • 2018-02-08
  • 조회 수 771

Linux wkhtmltopdf wkhtmltoimage install

  • LynX
  • 2018-01-31
  • 조회 수 602

APM LZ4_LIBS Not Found (CentOS7, MariaDB 10.1.29)

  • LynX
  • 2018-01-03
  • 조회 수 485

APM mysql ./configure

  • LynX
  • 2017-12-15
  • 조회 수 804

APM PHP-7.2.0

  • LynX
  • 2017-12-12
  • 조회 수 3157

Linux libiconv

  • LynX
  • 2017-12-08
  • 조회 수 558

XE Login