현재 비 IE 브라우저 (Chrome, Firefox, Opera, Safari)의 경우 해당 PDF에 대한 URL이 제공된 PDF 문서를 프린터로 보내고 싶습니다.iframe을 통해 브라우저의 PDF URL을 프린터로 보냅니다.
불필요한 창이 나타나지 않도록하려면 현재 으로 처리하고 있지만 인쇄가 완료되면 iframe을 닫고 싶습니다. 그렇지 않으면 페이지를 벗어날 때 일부 브라우저에서 대화 상자가 나타납니다. 때 하나
var _print_url, _remove_iframe, _set_print;
_print_url = function(src_url) {
$("<iframe src='" + src_url + "' type='application/pdf'>").css({
visibility: 'hidden',
position: 'fixed',
right: '0',
bottom: '0'
}).on('load', _set_print).appendTo(document.body);
};
_remove_iframe = function(iframe) {
return $(iframe).parent().find(iframe).detach();
};
_set_print = function() {
this.contentWindow.print();
/*
* Where we could do @contentWindow.close() with a window, we must remove the
* print iframe from the DOM. We have to engage in some async madness
* it seems, for no apparent reason other than this won't work
* synchronously (@cw.print above must be async, it seems) - even though
* window.close() appears to work synchronously.
*/
_.delay(_.partial(_remove_iframe, this), 100);
};
때때로는 인쇄 대화 상자가 올바르게 PDF를 보여주는 끝 구글 크롬으로 보이지만, 다음은
는 지금까지 (단순에 대한 lodash 및 jQuery를 사용)와 온 것입니다 프린터를 선택하고 인쇄 의도를 확인하면 실제로 프레임의 상위 페이지 내용을 PDF 자체 대신 프린터로 보냅니다.suggestions on the Mozilla page 링크가 있지만이 문서는 현재 폐기 된 것 같습니다. 필자가 볼 수있는 가장 좋은 예는 Amazon Web Services 인쇄 대화 상자에서 인보이스를 리버스 엔지니어링하는 것이었지만 창이 열립니다.
제가 생각한 또 다른 대안은 Google Cloud Print입니다.하지만 분명히 추가 소프트웨어 또는 Google 계정 구성이 필요하며, 필요하지 않으면 사용자에게 부여하지 않아야합니다.
URL과 함께, 특히 Javascript를 사용하여 PDF를 인쇄하는 방법에 대한 다른 예가 있습니까? 추가로 브라우저 추가 기능이나 창문과 같은 인위적인 부분이 없으면 어떻게해야합니까?
이것은 단지 의문이지만,'print()'를 호출하기 전에'this.contentWindow.focus()'를 호출하면 어떻게 될까요? –
@YatinSaraiya iframe을 참조합니다. jQuery는 이벤트 처리기가 정의 된 요소에 'this'를 바인딩합니다. ([여기, 마지막 단락을 참조하십시오] (http://api.jquery.com/on/#event-handler). –