0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

【帳票】OutSystemsサーバーと離れた拠点でリモート印刷

Last updated at Posted at 2022-08-31

StimulsoftEXとは

OutSystems専用に開発された帳票開発ソリューションで、Forgeにて公開されています。
基本的にStimulsoftEXの帳票システムは、ブラウザ上で動作するJavaScriptによりビューの表示や印刷を行います。
使いなれたブラウザ上で、帳票に関わる操作がすべて完結するので、現代の業務アプリケーションと非常に親和性が高いのが特徴となります。

リモート印刷とは

帳票印刷システムによっては、多くの印刷物を処理するためにプレビューなしで効率よく印刷する仕組みが求められます。また、拠点数が多かったりするなどで各拠点にてプリンター機器を管理したいなどの要件もあります。
このような場合、OutSystemsサーバーから、拠点に設置しているリモートプリントサーバーへデータを転送し直接印刷指示をすることにより、より多くの印刷ジョブを効率よく処理することで解決できます。

StimulsoftEX リモート印刷

リモート印刷のための RemotePrint アクションが準備されています。
IPアドレスとポート、その他パラメーターを設定することで、ターゲットプリンターのサーバーへ直接、軽量で効率のよいプロトコルバッファー経由で印刷指示を出せるようになります。

印刷処理においては、枠線などの太さや色などの定義情報と印字に必要なレコード情報である印刷データから、レンダリングを行い印刷オブジェクトを生成します。一般的に印刷オブジェクトのデータは、情報量の多いスプールデータでプリンターへ転送されるので、データサイズは大きくなります。

これに対し、StimulsoftEXのリモート印刷ではテキストによる少量の構造化データをバイナリ化し、そのまま遠隔地に転送するので、スプールデータ転送より効率がよいということになります。
image.png

image.png

Protocol Buffers(プロトコルバッファー)

プロトコルバッファーは、構造化データを高効率なバイナリへシリアル化する技術で、Google社により開発がすすめられています。
JSON に似ていますが、データサイズは小さく高速であるため、マイクロサービスの中核技術として注目を浴びています。

リモート印刷には圧縮オプションがありますが、プロトコルバッファー自体の効率がよいため、サーバーと拠点が近距離でネットワークスピードが確保されている場合には、非圧縮で送ったほうが圧縮処理のオーバーヘッドがない分、トータルのレスポンスがよい場合があります。

転送データサイズの効率化例

例えば、以下のような見積書の場合、印刷スプールで転送されるデータサイズは1.05MBにもなりますが、プロトコルバッファー経由だと、圧縮なしの場合でも308KBと非常にコンパクトになります。

見積書見本と印刷キューサイズ

image.png  

開発手順

ボタンクリックなどのアクションに以下のフローを定義します。
通信処理になるので、印刷処理の前にボタンを非活性にして、処理が終了するまでユーザーが2重操作しないようにします。
image.png

RemotoePrint アクションのパラメターは以下となります。

■RemotePrint

パラメーター 説明   
IP ターゲットサーバーのIPアドレス
Port ターゲットプリンターに設定したポートの値
Template  帳票テンプレートデータ
SourceData 印字データ
IsCompress 圧縮/非圧縮
拠点までの回線速度が遅い場合などに印刷データの圧縮を選択できます。
IsSSL 暗号化あり/なし
通信をSSLにより暗号化するかを選択できます。
IsPrintout 印刷あり/なし
印刷なしでリモートプリントサーバーへ印刷データの送信のみを行います。
※拠点までのデータ送信などのテストを行いたい場合に利用します。
PrinterOptions 印刷オプション
※下の項を参照
Output 戻り値
処理の成功可否、レスポンス時間、送信データサイズ、ターゲットプリンター名

■PrinterOptions

パラメーター 説明   
Copies 枚数
Color -1[規定値] 0[白黒] 1[カラー]
Landscape  -1[規定値] 0[縦] 1[横]
Duplex -1[規定値] 0[片面] 1[長辺両面] 2[短辺両面]
Kind 8[A3] 9[A4] 11[A5] 12[B4] 13[B5] 日本ハガキ[43] 0[カスタム] 
※原稿のサイズに関係なく、指定のサイズに拡大縮小
Width 用紙幅(カスタム)
Heigth 用紙高さ(カスタム)

リモートプリントサーバー

ターゲットサーバーのタスクトレイに常駐するサーバーアプリです。OutSystemsサーバーからの印刷指示を各ポートで待機します。

img2022-09-09 (1).png

  • インストールとアプリケーション起動
    RemotePrintServer.exeを任意のフォルダーに配置し実行ファイルを実行します。
    自己完結型アプリケーションなので、.Netなどのライブラリーのインストールは不要です。
    また、実行ファイルのショートカットを適切な場所に作成しておくと起動が容易になります。
  • ポート設定
    リモートプリントサーバーに接続されたプリンターのリストが表示されるので、ポート番号を指定しUpdateボタンを押すと、各プリンターが印刷指示待ちとなります。
  • アプリケーション終了
    タスクトレイにあるアイコンを右クリックして「Exit」を選択すると終了します。
    image.png
  • アンインストール
    実行ファイルを配置したフォルダを削除するだけです。特にレジストリ等への書き込みは行っていません。

暗号化通信(SSL)

RemotePrintアクションのパラメータIsSSLtrueにすることで、通信を暗号化することができます。
また、SSL通信を開始するには、リモートプリントサーバーへPFX形式の証明書を登録する必要があります。
設定するには、証明書ファイル(.pfx)をCertificateボタンで保存しパスワードを入力してください。

注)暗号化処理自身は、それなりに負荷がかかるのでレスポンス性能に影響があります。

まとめ

如何でしょうか。OutSystemsでは、プロトコルバッファーのように新しい技術を素早く取り入れることができ、規模の大きな印刷業務システムを構築することも可能となります。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?