PR

UWPから帳票印刷

CSharpTitle UWP

どうも、タイトル通りですが、
現状何とか動作していますが・・・
どちらかと言うといい方法募集中です。

スポンサーリンク

UWPからCOM参照できない

WinFormsの時はExcelを参照して、Excelにデータを出力してExcelから印刷していましたが・・・
UWPから直接Excelの操作ができないんです・・・。
出来なくはないが少々大変
(Open xml SDKというライブラリを使えばできるが、セル計算が自動じゃないとかめんどくさい・・・)

違う方法を考える

やってみたこと

1つ目
Windowsサービスを作成してサーバから印刷する。
UWPアプリからAPIを使用してSQLに印刷データを保存。
WindowsサービスでSQLテーブルを常時(Whileでまわしてるだけ)確認しCOM参照でエクセル操作、印刷をする
結果 失敗
どうやらサービス上からExcelを操作することがセキュリティ上できないらしい。(昔は出来たとか出来ないとか・・・)

2つ目
現在採用している方法です。
サービスがだめなら常時起動しているデスクトップマシンに
コンソールアプリとして常駐させる。
それ以外の方法は1つ目と同じです。
とりあえず、この方法で印刷はできているのですが、
プリンターにトラブルが発生した場合エラーが
常時起動しているデスクトップマシンに表示されて
実際に操作しているパソコン上になにも表示されず・・・
印刷できていないことが度々発生しています。
エラーの処理もデスクトップマシンにリモートでアクセスして・・・
と、手間が多いです。

今後の課題

なんとか印刷部分はだましだまし使っていますが、やはりトラブルが発生した際にいろいろ面倒なのでいい方法を考えたいところです。
UWPからConsoleアプリを開くことができるような話を耳にしたので
余裕があれば挑戦したいと思います。

とりあえずでも動いているとつい後回しにしたくなります。

2019/06/26追記
現状トラブルもなく動作しているのでこの方法で落ち着きそうです。
その後追加した機能

  • エラーログファイル作成(印刷できなかった時の時間、内容とプリンターステータスを記録)
  • Consoleの表示を見やすく

コメント

タイトルとURLをコピーしました