ダウンロード サンプルソース (2.6 KB)
今回はサンプルアプリに実装されている「印刷機能」と「入力チェック機能」について見ていきます。
はじめに
これまでの連載では見積デモのGUIの機能について着目し、説明を行ってきました。この連載は今回で最終回となりますが、最後は印刷の機能について見ていきたいと思います。見積デモの見積書タブには、最終的に作成された見積書を印刷するための『見積書発行』ボタンが用意されています。このボタンには以下の機能が組み込まれています。
- 入力チェックを行う
- 印刷する
今回は、この印刷を実行するまでの処理について見ていきます。
印刷機能とは
Curlにおける印刷機能とは、画面と同様の方法で生成した帳票などのグラフィックを、ローカルのプリンタを利用して印刷することができる機能のことです。多くのWebアプリケーションでは、HTMLで帳票のような複雑なグラフィックを作成することができないため、ローカルで印刷を行う際はサーバ側で一度PDFなどに出力し、そのPDFをダウンロードさせて印刷を行う、といった方法をとることが一般的です。
それに対してCurlは、クライアント側で印刷するグラフィックを生成し、プリンタに直接印刷を行わせることができます。これによりダウンロードする時間を省けるため、迅速な印刷が可能になります。また、ただ印刷を行うだけでなく、印刷する用紙のマージンやヘッダー・フッターなどを指定するほか、印刷の向きや印刷するプリンタ名なども指定することができます。
Curlで印刷を行うときにはprint-graphicというプロシージャを呼び出します。これだけで印刷を実行できるのですが、簡単すぎて逆に分かりづらいと思いますのでサンプルソースを見てみましょう。
{curl 6.0 applet}
{curl-file-attributes character-encoding = "shift-jis"}
||印刷したいグラフィックを生成します。
{let print-image:Frame =
{Frame
width = 100pt,
height = 100pt,
background = "yellow",
"印刷に成功しました"
}
}
{CommandButton
label = "印刷",
{on Action do
||印刷したいグラフィックを指定して、
||印刷を実行します。
{print-graphic print-image}
}
}
このサンプルを実行すると、以下のようなボタンが表示されます。

このボタンを押下するとプリンタのダイアログが表示されて、さらに『OK』ボタンを押下すると以下のようなグラフィックが印刷されます。

印刷の基本はこれだけです。この時にprint-graphicのプロパティを設定することでプリンタ名を指定したり、印刷の向きやヘッダー・フッターなどを指定したりすることができます。
ところで、印刷といえばセットで「プレビュー」機能も用意されているものです。プレビューは、印刷するグラフィックを何らかの方法で表示してあげればよいので、先程のサンプルコードに以下の記述を追加するだけで実現できます。
{curl 6.0 applet}
{curl-file-attributes character-encoding = "shift-jis"}
||印刷したいグラフィックを生成します。
{let print-image:Frame =
{Frame
width = 100pt,
height = 100pt,
background = "yellow",
"印刷に成功しました"
}
}
{CommandButton
label = "印刷",
{on Action do
||印刷のプレビューを表示します。
{popup-message
title = "印刷プレビュー",
print-image
}
||印刷したいグラフィックを指定して、
||印刷を実行します。
{print-graphic print-image}
}
}
これを実行すると、プリンタのダイアログが表示される前に以下のようなプレビューのダイアログが表示されます。

この記事は参考になりましたか?
- CurlデベロッパーセンターPick Up連載記事一覧
- この記事の著者
-
株式会社カール 宮崎 直人(カブシキガイシャカールミヤザキナオト)
リッチクライアント言語『Curl』の普及に努め、自社主催のセミナーの講師や導入コンサルタントなどを担当。現在はマーケティングにも携わり、HPの更新やコンテンツの拡充なども行っている。
※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です
【AD】本記事の内容は記事掲載開始時点のものです 企画・制作 株式会社翔泳社
この記事は参考になりましたか?
この記事をシェア

