印刷プログラムでは、印刷CAD(「15章印刷書式の作成」を参照)で作成した“印刷フォーマッ ト”を読み込み、プリンタ出力する機能を提供します。印刷書式に“原点部品”が登録されていれ ば、プログラムで各種処理を施した情報を“原点部品”の位置にオーバレイして印字出力すること ができます。
この機能を応用することにより、オブジェクトの値を取得してリアルタイムに印字出力したり、 取得データに処理を加えて印字出力することが簡単に行なうことができます。
また、作成された印刷プログラムは、“priprg”オブジェクトとしてシステム上で扱われます。
プログラム編集機能は、制御プログラムと同様になっています。
メインメニューから“印刷プログラム”を選択し、「印刷プログラム登録」画面を開きます。
“取込書式”欄をマウスで選択すると「フォーマット選択」ダイアログが表示されます。ここで は、「印刷CAD」で作成されている印刷フォーマットの一覧が表示されますので、ベースとなる書 式を選択して下さい。
図10-1 印刷書式の選択
(2)プログラム名称の登録
つづいて、“文書名”欄を選択して適当な文書名を登録します。
図10-2 プログラム名称の決定
(3)プログラムの編集
「印刷プログラム登録」画面の“プログラム編集”欄を選択して 「プログラム編集」画面を開き、プログラムを編集します(「9.2 編集エディタの使用法」を参照)。
図10-3 プログラム編集
(3)プログラムのコンパイル
「プログラム編集」画面の“コンパイル”ボタンを押してコンパイルをします。
コンパイルのエラーがでたらその箇所を修正し、成功するまでコンパイルします。
図10-4 プログラムのコンパイル
(4)プログラムの実行
コンパイルが成功したら、“ENT”ボタンを押し「印刷プログラム登録」画面に戻り、“印刷”欄 をクリックして下さい。「印刷出力設定」画面が表示されます。ここでは、印字出力に関するいく つかのパラメータを設定することができます。
図10-5 プログラムの実行
●印刷部数
印刷枚数を入力します。
●印刷倍率
印字出力の倍率を設定します。
印刷書式の作成サイズより小さな用紙に出力する場合など、縮小印字をすることができます
●原点印刷
印刷原点を印刷するかしないかを選択します。印刷プログラムを作成する際に原点位置や名称を 確認するときに原点も印刷出力しておくと役に立ちます。
●用紙サイズ
プリンタにセットされている、印刷用紙のサイズを選択して下さい。
●用紙方向
用紙の向きを選択します。
●試描画
“試描画”ボタンを押すと、印刷物のプレビューイメージを表示することができます。
図10-6 印刷イメージの表示例
●印刷
“印刷”ボタンを押すと、プリンタに印字出力されます。
印刷実行すると「印刷プログラム登録」画面の“実行”欄に、「RUN」と表示されます。このほか にもプログラムの実行状態がこの欄に表示されますが、その意味は表のとおりです。
表10-1 実行欄の表示
(5)プログラム作成日の確認
プログラムの編集が終わり、コンパイルも正常に終了すると図10-7のように「印刷プログラム 登録」画面の“プログラム編集”欄に、作成したソースプログラム(src)とオブジェクト(実行 プログラム(obj))の生成された日付が表示されます。
図10-7 プログラムの生成日付
コンパイルを行なっていない場合、または、コンパイルが正常に終了しなかった場合には、実行 プログラム(obj)の日付欄は図10-8のように空欄になります。
図10-8 実行プログラムが作成されていない場合
図のように印刷プログラムは、まずベースになる印刷フォームのデータを読み込みます。この時、 印刷フォーム上にプログラム原点が登録されていれば、その原点情報も取得しますので、印刷プロ グラムの中からプログラム原点出力ライブラリをコールすることにより、処理データを印刷フォー ム上にオーバーレイ出力することができます。
各種外部データ(RDBMS含む)にアクセスするプログラムを記述することにより、印刷フォームを テンプレートとしたアクティブドキュメントシステムを構築することが出来ます。
プレビュ機能を持っていますので、作成した印刷プログラムの出力結果を画面上で確認すること が可能です。
図10-9 印刷プログラムの流れ
図10-10 サンプル印刷フォーム
印刷フォームには、以下のプログラム原点が登録されています。
p0(点原点): 日付の印字用
p1(表原点): データの印字用(1次元表)
p2(表原点): データの印字用(2次元表)
以下にサンプルプログラムソースコードの解説をします。
1
2行目で、 13行目のkcxinit()関数で、KCX基本ライブラリの初期化作業を行なっています。
17
19行目のkcxpris_formread()関数で、ベースになる印刷フォームデータを読み込んでいます。
“印刷プログラム登録”画面で選択した印刷書式がデフォルトで読込まれます。
20
22行目で日付を文字列として作成して文字配列strbufにフォーマットして代入しています。
25行目のkcxpris_drawtext()関数で、strbufの内容を原点名p0の位置に描画する処理を行なっ
ています。ここで、p0に付いている“/”の意味は、原点から右方向に文字列が印字される指定で
す。(詳しくは、「19章 KCXライブラリリファレンス」を参照して下さい)
28-30行目で数値データを1次元のp1原点に描画を行なっています。
26
ここで、p1、p2に付いている“/”の意味は、p0と同様、原点から右方向に文字列が印字される
指定です。
さらに、kcxpris_drawval()関数の引数に注目して下さい。第1引数には、原点名が、第2引数
には、出力フォーマットが、第3引数には変数が指定されています。
第1引数の原点名には、以下のような記述が可能です。
(点原点の場合): /p0 -> 原点から右方向へ印字
(表原点): /p1[0] -> 1次元配列扱い、原点から右方向へ印字
第2引数のフォーマットには、以下のような記述が可能です。
有効整数桁数.有効小数点以下桁数
3.2 -> 整数桁数3桁、小数点以下2桁まで有効
41行目のkcxpris_output()関数で、印字出力を実際にプリンタに送っています。
印刷プログラムをコンパイルして“試描画”ボタンでプレビューすると以下の様に表示されます。
図10-11 サンプル印刷プログラムのプレビュー 以上で、サンプル印刷プログラムの概要についての解説を終わります。基本的なライブラリコー
ルの手順がご理解頂けたと思います。
KCX印刷ライブラリの詳しい解説は、「19章 KCXライブラリリファレンス」をご参照下さい。
[リスト10-1 サンプル印刷プログラムリスト]
1
2 #include
3
4 main( argc, argv )
5 int argc;
6 char *argv[];
7 {
8 int i, j;
9 char strbuf[32];
10
11
12 /* KARCRIXライブラリの初期化(先頭に必須)
*/
13 kcxinit( argc, argv );
14
15 /* 印刷ライブラリの初期化(必須) */
16 kcxpris_priinit();
16行目のkcxpris_priinit()関数で、KCX印刷ライブラリの初期化作業を行なっています。
18 /* 印刷フォームデータの読み込み */
19 kcxpris_formread();
21 /* 日付のフォーマット */
22 sprintf( strbuf, "%d年%d月%d日", 2000, 5,
3 );
23
24 /* 日付の印字 */
25 kcxpris_drawtext( /p0, strbuf );
33-37行目で数値データを2次元のp2原点に描画を行なっています。
27 /* データを印字 */
28 for( i=0; i<4; i++ ){
29 kcxpris_drawval( /p1[i], 3.2,
123.45 );
30 }
31
32 /* データを印字 */
33 for( i=0; i<4; i++ ){
34 for( j=0; j<4; j++ ){
35 kcxpris_drawval(
/p2[i][j], 3.2, 678.91 );
36 }
37 }
38
39
40 /* プリンタにページを出力 */
41 kcxpris_output();
42
43 }
p0/ -> 原点から左方向へ印字
p1/[0] -> 1次元配列扱い、原点から左方向へ印字
/p2[0][2] -> 2次元配列扱い、原点から右方向へ印字
p2/[0][2] -> 2次元配列扱い、原点から左方向へ印字
2 #include
3
4 main( argc, argv )
5 int argc;
6 char *argv[];
7 {
8 int i, j;
9 char strbuf[32];
10
11
12 /* KARCRIXライブラリの初期化(先頭に必須)
*/
13 kcxinit( argc, argv );
14
15 /* 印刷ライブラリの初期化(必須) */
16 kcxpris_priinit();
17
18 /* 印刷フォームデータの読み込み */
19 kcxpris_formread();
20
21 /* 日付のフォーマット */
22 sprintf( strbuf, "%d年%d月%d日", 2000, 5,
3 );
23
24 /* 日付の印字 */
25 kcxpris_drawtext( /p0, strbuf );
26
27 /* データを印字 */
28 for( i=0; i<4; i++ ){
29 kcxpris_drawval( /p1[i], 3.2,
123.45 );
30 }
31
32 /* データを印字 */
33 for( i=0; i<4; i++ ){
34 for( j=0; j<4; j++ ){
35 kcxpris_drawval(
/p2[i][j], 3.2, 678.91 );
36 }
37 }
38
39
40 /* プリンタにページを出力 */
41 kcxpris_output();
42
43 }
Copyright(C) All Rights Reserved. by S.I.Soubou,Inc.