2010-10-12 28 views
1

我正在開發一個Web應用程序,用戶需要通過一次單擊來打印特定的表單。根據我的發現,我明白我們需要創建一個打印版本的表格,然後將其發送給打印機。如何啓用基於Web的應用程序的直接打印功能?

但是我仍然無法找到一種方法直接發送這樣的可打印版本給打印機,而不會將生成的表格顯示給用戶。感謝您的任何建議。

謝謝

+2

我不確定這個要求在技術上是否可行。對此進行說明:如果一次點擊(大概在頁面上)是可能的,那麼頁面上的零點擊也是足夠的 - 它必須是Javascript。這意味着任何惡意軟件站點都可能強制自己被打印,並且可能不止一次。如果你認爲彈出窗口和popudner窗口不好,這會更糟糕。 – MSalters 2010-10-12 14:05:18

+0

實際上,如果您處於打印機位於網絡中的Intranet情況,則很容易。您的服務器端代碼將文檔發送到打印機。 – DOK 2010-10-12 15:02:38

+0

@DOK,正確的觀點,我會嘗試一下你的方法以及 – nimo 2010-10-13 04:44:41

回答

0

我這樣做是通過加載打印預覽到隱藏的iframe併發出.print()的JavaScript命令

+0

我要補充一點,這只是彈出默認的打印對話框。它不會將它直接發送到打印機 - 這顯然是不可能的。 – Jamiec 2010-10-12 14:12:17

+0

Thankz Jami,我試了你的方式,它工作正常,彈出對話框會比直接打印更好。 – nimo 2010-10-13 04:43:37

2

這是你需要的代碼:您還需要

<img src="print_button.jpg" onClick="window.print()" alt="Print this page" style="cursor: pointer;"> 

對打印的CSS文件,將樣式打印的頁面,並把這個在標題:

<link rel="stylesheet" media="print" type="text/css" href="print.css" /> 

這應該照顧你所需要的。

+0

但你仍然會彈出一個打印對話框,不是嗎? – DOK 2010-10-12 15:14:58

+1

你這樣做,但絕對應該。作爲開發人員,您不知道用戶想要使用哪臺打印機,或者他們是否真的想要打印。你不應該強迫你的用戶去做他們不想做的事情。 – Nicknameless 2010-10-12 15:25:20

0

如果您可以從服務器打印到指定的打印機(即您位於內聯網),則可以執行此類操作。有更多的代碼比你想在這裏看到的 - 得到完整的代碼here.關鍵是你的網絡打印機配置了ASPNET(或其運行的帳戶)的權限打印到它。

我已經做到了這一點。事實上,我們打印的太多了,以致於我們將打印從Web服務器轉移到另一臺機器上的Web服務或Windows服務,從而將負載從Web服務器上卸下。

using System.Drawing.Printing; 
using System.Text; 
using System.Web; 
using System.IO; 

PrintDocument doc = new PrintDocument(); 
// set the printer name 
doc.PrinterSettings.PrinterName = printerName; 
// print the page 
doc.Print(); 
相關問題