2012-01-12 94 views
2

我使用Silverlight開發的應用程序,現在我需要實現打印,我用 PrintDocument類,它看起來像這樣:Silverlight的打印尺寸太大

PrintDocument printDocument = new PrintDocument(); 
printDocument.PrintPage += new EventHandler<PrintPageEventArgs>(printDocument_PrintPage); 
printDocument.Print("My docuement"); 

但我面對有問題 - 如果有20-30頁,需要很多時間,如果我打開打印機的隊列,則顯示10個打印頁面的打印尺寸大約爲1.2GB。我試過用「測試打印」等簡單文本只用一個文本塊打印畫布(800 * 1000)。

我正在使用Silverlight 5.

有沒有人遇到過這樣的問題?有什麼辦法可以避免它?

+0

1.2GB用於「打印測試」的10個打印頁面?你確定?頁面上沒有其他東西嗎? – 2012-01-12 08:31:42

+0

好...這是我的測試標記: 這是測試印刷 我打印這種方式: 空隙printDocument_PrintPage(對象發件人,PrintPageEventArgs E) { e.HasMorePages = ++ PAGECOUNT <10; e.PageVisual = canvas; } – 2012-01-12 08:36:21

+0

您正在使用什麼樣的打印機/驅動程序? – 2012-01-12 08:39:18

回答

5

我的猜測是要打印的內容是作爲位圖發送的,而不是更高效的矢量格式。

這可能是由於司機。如果打印機驅動程序無法將Silverlight圖形轉換爲矢量,則只能將其打印爲位圖。我試圖force Silverlight into using Vectors但我的打印機不支持PostScript。 所以我切換到打印機,突然它只是千字節。

我看只有兩種方式,以避免位圖打印:

  1. 獲取PostScript打印機或

  2. 在服務器上創建一個打印機友好的文檔(PDF,Word中,文本),並允許客戶端手動下載並打印。

+0

你說的對,具有PostScript支持的打印機工作正常,但不是嗎很多采取120MB /頁的位圖? – 2012-01-12 09:24:30

+0

不,在600DPI的情況下,單個頁面可能會很大。 – 2012-01-12 09:29:04

+0

我添加了一些建議 – 2012-01-12 09:54:53