2011-10-25 16 views
8

可能重複:
Printing to a specific printer from a web app我可以使用JavaScript選擇打印機嗎?

我們的一個Intranet應用程序需要打印到非默認打印機。當然,人們經常忘記選擇正確的打印機。

我知道,你不能通過JavaScript正常地做到這一點,但鑑於瀏覽器是IE9,我可以將webapp添加到信任區域(並隨意擺弄安全設置),有什麼辦法嗎?編寫JavaScript將自動選擇正確的打印機?也許使用一些ActiveX或其他IE特定的東西。

+0

如果你有那種控制的,它的內部,那麼也許一個ActiveX控件會工作。 –

回答

6

不,Javascript對象模型包含一個window.print()方法,它可以激活Web瀏覽器的標準打印對話框,但功能可以擴展。如果Javascript代碼能夠檢查連接到計算機的打印機,查找打印機屬性或任意配置其設置,這將是不適當或安全的。

我建議在打印之前添加一個彈出窗口,提醒用戶選擇合適的打印機。

+0

顯然我不清楚,我知道這是不可能'一般',但我希望有可能是一個IE特定的解決方案,如果一些安全政策放鬆(這是一個* intranet *應用程序後全部) – Kris

+1

你很清楚,答案還是一樣,沒有辦法。 – isJustMe

+1

實際上,contam的解決方案是有效的,即使它對我的目的來說太貴了。 – Kris

3

如果你的瀏覽器是基於IE,你可以從meadroid使用此ActiveX:

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

我已經在過去使用它,它允許控制打印機的屬性。

這裏是mmeadroid文檔的例子:

<script> 
function printWindow() { 
    factory.printing.SetMarginMeasure(2); // set inches 
    factory.printing.header = "This is MeadCo"; 
    factory.printing.footer = "Printing by ScriptX"; 
    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.copies = 1; 
    factory.printing.printBackground = true; 
    factory.printing.Print(false); 
    factory.printing.WaitForSpoolingComplete(); 
    // navigate or close browser here // 
} 
</script> 
+0

這似乎是可行的,但僅限付費版本。 – Kris

+0

是的:-) ...它不是免費的,但對於商業項目,這是一個很好的投資 –

+2

如果你切換到Firefox這裏是一個替代,一個Firefox的插件類似於美贊科腳本,但免費:https://addons.mozilla.org/it/firefox/addon/js-print-setup/ –

相關問題