2012-02-09 53 views
9

是否可以有繞過打印對話框的打印選項?HTML/Javascript一鍵單擊打印(無對話框)

我正在一個封閉的系統,並希望能夠預先定義的打印對話框中設置;並在點擊按鈕後立即處理打印。

從我讀什麼,要做到這一點的方式爲每個瀏覽器的不同而不同。例如,IE會使用ActiveX。 Chrome/Firefox需要擴展。基於此,看來我必須用C++編寫一個應用程序,它可以處理瀏覽器傳遞的參數,以適當的格式(對於標籤)進行自動打印。然後,我將不得不將其重寫爲Chrome/Firefox的擴展。最終結果是,我們封閉系統上的用戶將不得不根據他們使用的瀏覽器來下載/安裝這些功能。

我希望有另一種方式去了解這一點,但這個任務很可能違反了瀏覽器的安全問題。

+0

你最終使用了什麼?我們正在嘗試使用Firefox或Chrome瀏覽器。 – 2015-03-19 01:58:09

+0

@ReazPatwary我們結束了使用名爲jZebra的東西,現在叫做qz(http://qzindustries.com/download)。然而,我擡頭/發現了另一種可能的方式,但它需要客戶端下載。這將涉及用戶安裝使用自定義協議的應用程序(https://msdn.microsoft.com/en-us/library/ie/aa767914%28v=vs.85%29.aspx) – teynon 2015-03-20 02:05:58

+0

感謝您的快速響應。但我們的主要平臺是Mac OSX。看起來像一個Windows平臺的.exe文件:(。 – 2015-03-20 15:15:39

回答

5

我最終落實,工作得非常類似的Nexus國防部管理器中的自定義應用程序。我編寫了一個C#應用程序,它註冊了一個自定義的Application URI Scheme。以下是它的工作方式:

  1. 用戶單擊網站上的「打印」。
  2. 網站鏈接用戶「CustomURL://打印/ {ID}
  3. 應用是由Windows通過自定義URI方案推出
  4. 應用與預配置的服務器進行通信,以確認打印請求,並在我的案件得到實際的打印命令。
  5. 然後應用程序使用C# RawPrinterHelper類將命令直接發送到打印機。

該方法需要用戶初次下載,第一次啓動應用程序時需要從窗口進行一次安全提示。我還實施了一些Javascript魔術,以便檢測打印作業是否已處理。如果不是,它會要求他們下載應用程序。

8

我知道這是一個遲到的回覆,但這裏有一個我正在使用的解決方案。我只使用IE瀏覽器,並沒有使用任何其他瀏覽器進行測試。

該子打印效果有效地取代了默認的打印功能。

<script language='VBScript'> 
Sub Print() 
     OLECMDID_PRINT = 6 
     OLECMDEXECOPT_DONTPROMPTUSER = 2 
     OLECMDEXECOPT_PROMPTUSER = 1 
     call WB.ExecWB(OLECMDID_PRINT, OLECMDEXECOPT_DONTPROMPTUSER,1) 
End Sub 
document.write "<object ID='WB' WIDTH=0 HEIGHT=0 CLASSID='CLSID:8856F961-340A-11D0-A96B-00C04FD705A2'></object>" 
</script> 

然後使用Javascript的window.print();綁定到超鏈接或按鈕來執行打印命令。

如果你想自動打印在頁面加載時,然後把下面靠近標籤的代碼。

<script type="text/javascript"> 
window.onload=function(){self.print();} 
</script> 
+0

VBScript在任何其他瀏覽器上都不能工作,但它是一個對於IE而言,這是一個很好的解決方案 – eis 2013-01-24 16:48:55

+1

爲了跟進,我最終實現了一個名爲jZebra的Java應用程序,該應用程序需要第一次安裝/安全審批。https://code.google.com/p/jzebra/ – teynon 2013-09-16 02:28:27

3

我發現了一個很棒的Firefox插件來解決這個問題。嘗試使用seamless printing Firefox的插件,它將從Web應用程序打印某些內容而不顯示打印對話框。

  1. 打開Firefox
  2. 搜索插件名稱無縫印刷和安裝
  3. 成功安裝,當用戶想要打印的東西打印窗口將得到繞過後。