Esempio n. 1
0
        /// <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 "";
        }
Esempio n. 2
0
        /// <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);
            }
        }