文字列からプリンタを取得
using System; using System.Printing; namespace ConsoleApplication1 { class Program { static void Main(string[] args) { var queueByFullName = new PrintQueue(new LocalPrintServer(), LocalPrintServer.GetDefaultPrintQueue().FullName); Console.WriteLine(queueByFullName.FullName); Console.ReadKey(); } } }
PrintQueueクラスのコンストラクタにPrintServerクラスのインスタンスとプリンタの完全名(文字列)を渡すと取得出来る。
以下のようにインストールされていないプリンタ名を指定するとSystem.Printing.PrintQueueExceptionが発生する。
using System; using System.Printing; namespace ConsoleApplication1 { class Program { static void Main(string[] args) { //var queueByFullName = new PrintQueue(new LocalPrintServer(), LocalPrintServer.GetDefaultPrintQueue().FullName); var queueByFullName = new PrintQueue(new LocalPrintServer(), "Hoge"); Console.WriteLine(queueByFullName.FullName); Console.ReadKey(); } } }
インストールされているプリンターの一覧を取得する。
using System; using System.Printing; namespace LocalPrintersName { class Program { static void Main(string[] args) { foreach(var queue in new LocalPrintServer().GetPrintQueues()) { Console.WriteLine(queue.FullName); } Console.ReadLine(); } } }
LocalPrintServerのインスタンスメソッドGetPrintQueuesを実行
実行した端末のPrintQueueクラスのコレクションが返る。
後はPrintQueueクラスのプロパティを出力
既定のプリンター名を取得する。
using System; using System.Printing; namespace DefaultPrinterName { class Program { static void Main(string[] args) { Console.WriteLine("既定のプリンタは{0}です。", LocalPrintServer.GetDefaultPrintQueue().FullName); Console.ReadKey(); } } }
system.printingを参照設定に追加
LocalPrintServerクラスのstaticメソッドGetDefaultPrintQueueでプリンタ設定のインスタンスを取得
FullNameプロパティでプリンタ名を取得
WPFで帳票 参考リンク
ネットで色々検索してみるとWPFでも帳票印刷が出来るらしい。
後で参考に出来そうなリンクをメモ
以下参考:
WPFでの印刷の基本(1) 単一ページの印刷 - Qiita
WPFでの印刷の基本(2) 複数ページの印刷 - Qiita
WPFを帳票フレームワークとして使う - @kotyのブログ
WPF/XAMLで帳票のデザイン・印刷を行う - Qiita
[C#]プリンタ一覧と、デフォルトプリンタを取得するには
のぶろぐ WPFでの印刷
C# App.Configでエラー
DbProviderFactoriesの仕組みを勉強してて、DbProviderFactories.GetFactoryClasses()でConfigurationErrorExceptionが発生。
App.Configをよ~く見てみるとセクションの後のスペースが交っていた。
これを消してやると解消。
1時間くらい悩みました・・・