2011-11-01 94 views

回答

1

對不起,通知您這些步驟不能簡單地使用純JavaScript來完成。想象一下,如果網站能夠自動將打印請求直接發送給用戶打印機。您訪問惡意網站並且可能會用盡碳粉和/或紙張。您將不得不在客戶端瀏覽器上安裝一些執行實際打印的插件。

+0

只要給出一個打印對話框就足夠了。用戶點擊打印對話框的打印按鈕表單後,應該關閉。 – Sid

1

有兩種情況:通過獲取請求或通過發佈(表單)請求加載PDF;我的場景通過調出打印對話框來解決這些問題,當打印對話框關閉時,關閉窗口。

對於GET請求,這應該是足夠了:

function testprint(){ 
    var w = window.open(yourURL) 
    w.focus() 
    w.print() 
    // Don't try to close it until you've give the window time to register the print dialog request 
    setTimeout(function(){ 
     w.close() 
    }, 1000) 
} 

的職位是一個比較複雜的。經過一段時間的爭論後,這就是我想出的 - 它使用隱藏的iframe;我無法讓它與額外的窗口一起工作。其結果是雖然你可以隱藏iframe,所以用戶甚至不需要看到其他窗口。 (請注意,您可以將獲取解決方案轉換爲使用iframe,並避免多餘的窗口在一起。)它假定您已經使用jQuery構建了一個表單,並且該文章的結果將是您想要的PDF。

jQuery(document.body).append(form); 
if (doPrint) { 
    jQuery(document.body).append("<iframe style='display:none' id='doPrintId' name='doPrint'>"); 
    form.submit(function() { 
     form.attr('target', 'doPrint'); 
    }); 
    var printWindow = document.getElementById('doPrintId'); 
    printWindow.onload = function(){ 
     printWindow.focus(); 
     printWindow.contentWindow.print(); 
     document.body.remove(printWindow); 
    }; 

    form.submit(); 
} else { 
    form.submit(); 
} 

jQuery(document.body).remove(form); 
相關問題