7

印刷用のコードを見つけました。しかし、ダイアログボックスなしで自動的にプリンターに送信したいです。プリンター名は知っています。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");
4

3 に答える 3

6

PrintDialog クラスの代わりに、名前でプリンターを設定できる PrintDocument クラスを直接使用してみてください。

using System.Drawing.Printing;

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

使用可能なプリンター名をループするには:

foreach (string s in PrinterSettings.InstalledPrinters) {
  //
}
于 2013-07-11T12:14:26.880 に答える
2

このコードを削除if (pd.ShowDialog() != true) return;して追加しpd.PrintQueue = new PrintQueue(new PrintServer(), "printer name" );、選択したプリンターを印刷します。

于 2013-07-11T12:21:52.580 に答える