CubePDFのソースコード探訪 ダイアログの表示、非表示を設定できるようにカスタマイズ

前回の記事で、CubePDFに「SkipUI」引数を渡すことでダイアログを表示せずにPDF出力できることがわかった。

だが、印刷時にその引数を渡すことが(私の知識の上では)出来ないので、機能として存在することは検証できても、実際の運用時には使うことが出来ない。

なので、ダイアログの表示、非表示を設定できるようにしてみる。

「設定」というものの、今現在の知識ではUIデザイナを触ることも、それを触った結果のプログラミングも出来ないので、今回は、デスクトップに「SkipUI.txt」と言うファイルが存在すればダイアログをスキップして出力。存在しなければダイアログを表示するというプログラムを書いてみる。

デスクトップへのパスは以下のコードで取得できる様子。

System.Environment.GetFolderPath(Environment.SpecialFolder.DesktopDirectory)

ファイル名を結合したり、ファイルパスにファイルが存在するかどうかというのも検索すればすぐに出てくるので、それらを利用して以下のコードを書いた。

               String desktop_path = System.Environment.GetFolderPath(Environment.SpecialFolder.DesktopDirectory);
               String skipui_filename = "SkipUI.txt";
               String skipui_path = System.IO.Path.Combine(desktop_path, skipui_filename);
               Boolean skipui = false;
               if (System.IO.File.Exists(skipui_path))
               {
                   skipui = true;
               }

Mainの全文は以下のように変更。

[STAThread]
       static void Main(string[] raw)
       {
           MessageBox.Show("Bootstrap");
           try
           {
               Logger.ObserveTaskException();
               Logger.Info(LogType, Assembly.GetExecutingAssembly());
               Logger.Info(LogType, $"Ghostscript {GetGsVersion()}");
               Logger.Info(LogType, $"[ {string.Join(" ", raw)} ]");
               ApplicationSetting.Configure();
               Application.EnableVisualStyles();
               Application.SetCompatibleTextRenderingDefault(false);
               var args = new ArgumentCollection(raw, Argument.Windows, true);
               var setting = CreateSetting(args, Assembly.GetExecutingAssembly());
               setting.Load();
               setting.Normalize();
               setting.Set(args);
               String desktop_path = System.Environment.GetFolderPath(Environment.SpecialFolder.DesktopDirectory);
               String skipui_filename = "SkipUI.txt";
               String skipui_path = System.IO.Path.Combine(desktop_path, skipui_filename);
               Boolean skipui = false;
               if (System.IO.File.Exists(skipui_path))
               {
                   skipui = true;
               }
               if (args.Options.ContainsKey("SkipUI") || skipui) Execute(setting);
               else Show(setting);
           }
           catch (Exception err) { Logger.Error(LogType, err); }
       }

ソリューションをリビルドして、まずはデスクトップに「SkipUI.txt」ファイルを作らずに実行。

ダイアログが表示された。

次に、デスクトップにファイルを作成して実行。

ダイアログが表示されなかった。


成功。

この記事が気に入ったらサポートをしてみませんか?