2013-07-11 5 views
2

Я нашел код для печати. Но я хочу отправить на принтер автоматически без диалогового окна. Я знаю, что ты знаешь. Я получаю имя принтера из таблицы SQL. Как мне это сделать ?Автоматическая печать без диалога

// select printer and get printer settings 
     PrintDialog pd = new PrintDialog(); 
     if (pd.ShowDialog() != true) return; 


     // create a document 
     FixedDocument document = new FixedDocument(); 
     document.DocumentPaginator.PageSize = new Size(pd.PrintableAreaWidth, pd.PrintableAreaHeight); 

     // create a page 
     FixedPage page1 = new FixedPage(); 
     page1.Width = document.DocumentPaginator.PageSize.Width; 
     page1.Height = document.DocumentPaginator.PageSize.Height; 

     // add some text to the page 
     TextBlock page1Text = new TextBlock(); 
     page1Text.Text = "This is a text" 
     page1Text.FontSize = 12; // 30pt text 
     page1Text.Margin = new Thickness(50); // 1 inch margin 
     page1.Children.Add(page1Text); 

     // add the page to the document 
     PageContent page1Content = new PageContent(); 
     ((IAddChild)page1Content).AddChild(page1); 
     document.Pages.Add(page1Content); 

     // and print 
     pd.PrintDocument(document.DocumentPaginator, "Print"); 
+1

Что произойдет, если вы удалите 'if (pd.ShowDialog()! = True) return; 'line? –

+0

Посмотрите на класс 'PrintDocument': http://msdn.microsoft.com/en-us/library/system.drawing.printing.printdocument(v=vs.110).aspx – Treb

+0

Спасибо, по умолчанию. Но вы хотите использовать принтер не по умолчанию в окнах. Я хочу использовать принтер, который я знаю, имя принтера. – user2550719

ответ

1

Вместо класса PrintDialog, попробуйте использовать класс PrintDocument непосредственно, где вы можете установить принтер по имени:

using System.Drawing.Printing; 

PrintDocument pd = new PrintDocument(); 
pd.PrinterSettings.PrinterName = "my printer"; 

Чтобы перебрать доступные имена принтеров:

foreach (string s in PrinterSettings.InstalledPrinters) { 
    // 
} 
1

Я удаляю if (pd.ShowDialog() != true) return; и добавляю этот код pd.PrintQueue = new PrintQueue(new PrintServer(), "printer name");, чтобы распечатать мой выбранный принтер.

+0

Мне понравился этот ответ, поскольку мне нужно было напечататьVisual, и это было доступно только в PrintDialog – Yoni

Смежные вопросы