2009-08-07 2 views
6

window.print()를 사용하여 현재 페이지를 인쇄 할 수 있다는 것을 알고 있지만 ... 알고 싶은 것은 데이터를 채우고 인쇄하기 위해 javascript를 사용하여 문서를 작성할 수 있습니까?Javascript 인쇄 기능은 어떻게 작동합니까? 자바 스크립트를 사용하여 문서를 만들고 인쇄 할 수 있습니까?

당신이 자바 스크립트 객체로 HTML/XML을 가질 수있는 것과 같이, 당신이 비슷한 작업을 수행 할 수 있습니다

var name = "Matt"; 
var htmlDocumentToPrint = "<html><body><div style='width:300px; height:20px; background-color:#000; text-align:center;'>My name is " + name + "</div></body></html>"; 

htmlDocumentToPrint.print(); 

는 정말 색상 만 포맷 할 much-- 모든 추가에 대해 걱정하지 않는다 문서에 데이터를 채우고 인쇄하십시오. 이것이 가능한가?

답변

4

Print() 윈도우 오브젝트에서 메소드이다. javascript를 사용하여 창에서 문서를 만든 다음 해당 창 개체에서 print를 호출하면 제대로 작동합니다.

<script type="text/javascript"> 
    var myWindow = window.open('','','width=200,height=100') 
    myWindow.document.write("This is 'myWindow'") 
    myWindow.print(); 
</script> 

예 : w3schools.com 예 : window open example.

+1

또한 숨겨진 문서를 인쇄 할 수 숨겨진 iframe을 사용할 수 있습니다! – James

+0

이것은 Chrome이나 Opera에서 작동하지 않는 것 같습니다. self.print() 또는 window.print()가 숨겨진 iFrame에서 호출 될 때 두 브라우저 모두 부모 창을 인쇄하는 것으로 보입니다. – Jack

+0

실제로 높이와 너비가 0px 인 iframe에서는 작동하지 않는 것 같습니다 ... – Jack

0

문서가로드되는 동안이 작업을 수행하는 경우 document.write을 사용하여 현재 문서를 작성한 다음 인쇄 할 수 있습니다.

페이지로드가 완료되면 함수를 사용하여 DOM을 조작하거나 바람직하게는 jQuery 또는 Prototype과 같은 라이브러리를 사용하여 현재 문서를 인쇄 할 수 있습니다.

1

print()는 기본적으로 지정된 창에 대한 기본 인쇄 대화 상자를 호출합니다.

그러나 생각하고있는 것처럼, 모든 창 또는 (i) 프레임에서 작동합니다.

따라서 프레임에 내용을 쓰면이를 호출하여 인쇄 할 수 있습니다.

window.frameName.print(); 

참고 유일한 단점 (그리고 큰 하나)이 인쇄 대화 상자 없습니다 ... 인쇄 미리보기 창 ... 따라서 사용자가 실제로 볼 수있는 기회를 얻을하지 않습니다를 호출하는 것입니다 프린터/용지에 맞게 인쇄 및/또는 크기를 조정할 수 있습니다.

개인적으로 모든 브라우저가 위의 문제를 처리하기 위해 다음을 구현하기를 바랍니다. ;-)

window.printPreview(); 
1

내 첫번째 생각 : 당신은, 프로그래밍은 iframe을 만들 HTML을 할당 할 수

인쇄 할

의 iframe.contentWindow의 상황에 print() 함수를 호출 한 후 DOM에서 iframe을 제거 :

function printHTML(input){ 
    var iframe = document.createElement("iframe"); // create the element 
    document.body.appendChild(iframe); // insert the element to the DOM 

    iframe.contentWindow.document.write(input); // write the HTML to be printed 
    iframe.contentWindow.print(); // print it 
    document.body.removeChild(iframe); // remove the iframe from the DOM 
} 

printHTML('<h1>Test!</h1>'); 

위의 스 니펫 here을 테스트 할 수 있습니다.

+0

IE에서 작동하지 않습니다. 올바르게 기억한다면 인쇄하기 전에 창을 집중시킬 필요가 있습니다. – James

+0

Google 크롬이 다운 됨 –

1

왜 media = print에 대해 모든 것을 보이지 않게하고 특수 코드로 일부 블록 만 보이게하는 것이 좋을까요?

0

Jack, 문서를로드 한 후 iframe 내부에서 window.print()를 시도 했습니까?

0

함수를 작성할 필요가없는 간단한 해결책이 있습니다. 즉, 창입니다.

언제든지 사용하고 싶습니다. put - onClick = "window.print();"

<a href="" onClick="window.print();">Print</a> 

나는 모든 브라우저 고환하고 그것이 마치 마법처럼 작동합니다!

0

두 가지 인쇄 방법 중 세 가지 방법이 있습니다.

  1. 전체 창 인쇄 : window.print();이 작동합니다.

  2. 특정 프레임 만 인쇄 : window.parent._frame_id_.print();이 작동합니다.

  3. 를 인쇄 documentFragment는 (적어도 파이어 폭스에서) 작동하지 않습니다 document.createDocumentFragment().print();//undefined

관련 문제