/// <summary> /// プリンタまわりの情報を表示する /// </summary> /// <param name="doc"></param> private static void ShowPrinterInfo(bpac.IDocument doc) { Console.WriteLine("プリンタ情報を表示します"); // GetInstalledPrinters()で取得できるのは、P-Touchのみ? var printerNameList = (object[])doc.Printer.GetInstalledPrinters(); foreach (string printerName in printerNameList) { // プリンタ情報 var support = doc.Printer.IsPrinterSupported(printerName) ? "Yes" : "No"; var status = doc.Printer.IsPrinterOnline(printerName) ? "Online" : "Offline"; Console.WriteLine($"{printerName} - Support: {support} , Status: {status}"); // 複数プリンタがあってもdoc.Printerだけだと片方しか取得できないため、 // doc.SetPrinter()で明示的にプリンタを指定してからdoc.Printerで情報を取得する // なお、ラベルの調整はしない doc.SetPrinter(printerName, false); // ラベル情報: // プリンタがオフライン・ラベルがセットされていない場合は // mediaId=0、mediaNameは長さゼロの文字列が返ってくる var mediaId = doc.Printer.GetMediaId(); var mediaName = doc.Printer.GetMediaName(); var mediaStatus = string.IsNullOrEmpty(doc.Printer.GetMediaName()) ? "No Media" : $"Label - {mediaId} : {mediaName}"; Console.WriteLine(mediaStatus); } }
/// <summary> /// 利用可能なプリンタ名を取得する(複数ある場合は、最初に見つかったものを選択) /// </summary> /// <param name="doc"></param> /// <returns></returns> private static string GetEnabledPrinterName(bpac.IDocument doc) { var printerNameList = (object[])doc.Printer.GetInstalledPrinters(); foreach (string printerName in printerNameList) { doc.SetPrinter(printerName, false); if (doc.Printer.IsPrinterSupported(printerName) && doc.Printer.IsPrinterOnline(printerName) && !string.IsNullOrEmpty(doc.Printer.GetMediaName())) { // プリンターがサポート・オンライン、かつ、 // メディアが設定されている場合に印刷可能なプリンタとみなす return(printerName); } } return(""); }