2013-05-05 156 views
4

我打算使用PrintDocument顯示我的C#WinForms應用程序的一部分,但幾乎完成,但打印機出現問題。我用下面的代碼來捕捉我的窗體的圖像,然後打印該圖像,最後我用一個PrintPreviewDialog顯示打印預覽:以編程方式打印到虛擬打印機(XPS)

PrintDocument doc = new PrintDocument(); 
doc.PrintPage += doc_PrintPage; 
doc.Print(); 
printPreviewDialog1.Document = doc; 
printPreviewDialog1.ShowDialog(); 

,這是doc_PrintPage功能:

Bitmap bmp = new Bitmap(tabControl1.Width, tabControl1.Height, System.Drawing.Imaging.PixelFormat.Format32bppArgb); 
tabControl1.DrawToBitmap(bmp, new Rectangle(0, 0, tabControl1.Width, tabControl1.Height)); 
e.Graphics.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic; 
e.Graphics.DrawImage((Image)bmp, 0, 0); 

doc.print()函數被調用,Microsoft OneNote程序被打開並顯示我的打印表單,並且PrintPreviewDialog控件將打開一個包含我的預覽的新表單。

我將打印一個無聲打印,以便打開任何打印機程序(如設置爲默認打印機的OneNote)或打開沒有物理打印機(我認爲如果我的用戶連接了物理打印機,頁面將被實際打印出來!這正是我想要的)。我只是想在沒有任何打印的情況下顯示打印預覽,是否有任何方法可以打印到XPS(虛擬打印機文件?)或任何其他沒有實際打印的方式?

+1

Remove doc.Print(); – 2013-05-06 02:39:37

+0

以及我測試過它,但是當我刪除doc.print時,這意味着什麼都不打印,所以沒有預覽可用,是嗎?我怎樣才能顯示我的預覽? – 2013-05-06 08:28:37

回答

2

您必須設置/更改PrintDocument.PrinterSettings才能設置特定的打印機,否則Print將不知道需要特定的打印機並提示用戶確認默認打印機或選擇其他打印機。

更新:

關閉我的頭頂,像下面可能做的伎倆:

PrinterSettings printerSettings = new PrinterSettings(); 
printerSettings.PrinterName = "Microsoft XPS Document Writer"; 
doc.PrinterSettings = printerSettings; 

你可能有不同的設置,從而取得你想要什麼。

+1

謝謝,但我該怎麼辦? – 2013-05-06 08:29:28

2

我不能添加評論,因此一個答案。 彼得裏奇的建議是正確的,如果你想確保打印輸出不會在(虛擬)打印機中結束。

我檢查了PrintPreviewDialog,這是我得到的工作:

PrintDocument doc = new PrintDocument(); 
doc.PrinterSettings.PrinterName = this.m_printingParameters.SelectedPrinterName; 
doc.PrinterSettings.PrintFileName = Path.Combine(Path.GetTempPath(), "Temporary_result.xps"); 
doc.PrinterSettings.PrintToFile = true; 
doc.PrintPage += doc_PrintPage; 

PrintPreviewDialog printPreviewDialog1 = new PrintPreviewDialog(); 
printPreviewDialog1.Document = doc; 
printPreviewDialog1.ShowDialog(); 

如果打印圖標的用戶點擊,結果將被打印到文件放置在臨時文件夾中。只是爲了確保你可以在之後刪除文件。

不過,如果你想創建沒有打印按鈕打印預覽對話框中,選中這個話題Disabling "print" button in .net print preview dialog

難道你要找的東西?

+0

這隻有在XPS打印機當前被選中時纔有效 – DarkWanderer 2017-06-20 16:22:38