|目次|前ページ|次ページ| ───────────────────────────────────── ■印刷管理ジョブ(汎用印刷エンジン)使用手引書■ copyright エスアイエム 印刷データをスプールファイルに出力する処理 ───────────────────────────────────── ◆汎用印刷エンジン処理手順 [1-1] 標準的な初期化処理 splno <--- スプール番号 setstr=$$VsInit^ZVSLPV0(splno) <<標準的な初期化処理>> *** スプールに出力します。 [1-2]印刷フォントをダウンロードする splno <--- スプール番号 dmy=$$VsDownLdF^ZVSLPV0(splno) <<vcom汎用印刷エンジンで使用するフォントを設定>> *** スプールに出力します。 *** setupで設定済みのフォントを置き換え(カスタマイズして下さい) *** ここではサンプルでしかありません。自分用のフォントを設定してください [1-3]プリンタにグラフィックス描画を可能にする splno <--- スプール番号 setstr=$$VsGDIEna^ZVSLPV1(splno) <<プリンタにグラフィックス描画する場合のみ>> *** この関数はスプールに出力しませんので戻り値の文字列を出力してください。 [1-4] 標準的なフォントオープン処理 splno <--- スプール番号 setstr=$$VsOpenFonts^ZVSLPV1(splno) <<標準的なオープン処理>> *** スプールに出力します。 [1-5] 印字行桁位置を指定(小数点有を指定可能) *** この関数はスプールに出力しませんので戻り値の文字列を出力してください。 x <--- 印字桁位置(含む小数点) y <--- 印字行位置(含む小数点) setstr=$$VsLcPos^ZVSLPV1(x,y) <<プリンタメインフォントで印字行桁位置を指定>> x <--- 印字桁位置(含む小数点) y <--- 印字行位置(含む小数点) dotx <--- 印字桁差分ドット数 doty <--- 印字行差分ドット数 setstr=$$VsXYPos^ZVSLPV1(x,y,dotx,doty)(小数点) <<プリンタメインフォントで印字行桁+−差分ドット位置を指定>> x <--- 印字桁位置(含む小数点) y <--- 印字行位置(含む小数点) setstr=$$VsCurPos^ZVSLPV1(x,y) <<プリンタ現在フォントで印字行桁位置を指定>> [1-6] 出力文字列をスプールに出力 dmy=$$VsWrite1^FNCSPLV1(splno,page,y,x,setstr) <<プリンタにデータ出力>> [1-7] 標準的なフォントクローズ処理 setstr=$$VsCloseFonts^ZVSLPV1(splno) <<標準的なクローズ処理>> *** スプールに出力します。 [1-8] 画面にグラフィックス描画モード setstr=$$VsGDIDis^ZVSLPV1() <<プリンタにグラフィックス描画する場合のみ>> *** この関数はスプールに出力しませんので戻り値の文字列を出力してください。 [1-9] 標準的な終了処理 setstr=$$VsTerm^ZVSLPV1(splno) <<標準的な終了処理>> ◆<<<副フォントのダウンロード切替え処理手順>>> [2-1] 副フォント削除&再設定(次にフォントを選択のこと) font <- フォント番号(1から64) LogFont <- LOGFONT構造体にセットする値(NULLの場所は前の値のまま) [1]FaceName/[2]Height/[3]Width/[4]escapement/[5]orientation/ [6]weight(0,100,200,...,900)/[7]italic/[8]underline/[9]strikeout/ [10]charaset(SJIS=128)/[11]/[12]/[13]quality/[14]pitchandfamily/ setstr=$$VsCngSF^ZVSLPV1(font,LogFont) *** この関数はスプールに出力しませんので戻り値の文字列を出力してください 。 [2-1] 副フォント印字モードに切替(フォント選択) font <--- フォント番号(1から64) setstr=$$VsSubFnt^ZVSLPV1(font) <<カレントフォントが変更されます>> *** この関数はスプールに出力しませんので戻り値の文字列を出力してください。 ◆<<<メインフォントのダウンロード切替え処理手順>>> [3-1] メインフォント削除&オープン(変更) LogFont <--- LOGFONT構造体にセットする値(NULLの場所は前の値のまま) setstr=$$VsCngF0^ZVSLPV1(LogFont) [3-2] メインフォントの行間/桁間/含む外部リーディングの指定 linedot <--- メインフォントの行間ドット数 columndot <--- メインフォントの桁間ドット数 extleading <--- 含む外部リーディングの指定 (0:含む外部リーディング,1:含まない) setstr=$$VsMSpace^ZVSLPV1(linedot,columndot,extleading) *** プリンタオープンの前に設定 [3-2] 副フォントへの切替え(副フォント印字モードに切替) font <--- フォント番号(1から64) setstr=$$VsSubFnt^ZVSLPV1(font) <<<現在フォントはこのフォント番号になります>>> *** この関数はスプールに出力しませんので戻り値の文字列を出力してください。 ◆<<<GDI描画関数>>> [4-1]直線を描画 (x1+dotx1,y1+doty1) <- 開始点行桁ドット (小数点有の場合はdotx1,doty1は無視) (x2+dotx2,y2+doty2) <- 終了点行桁ドット (小数点有の場合はdotx2,doty2は無視) p1 <--- 線の色(0:黒) p3 <--- ペンスタイルの指定(0:無し,1:指定有り) p4 <--- ペンスタイルのコード(0:実線) p5 <--- ペンの太さ(>0) str=$$VsLine^ZVSLPV1(x1,y1,x2,y2,dotx1,doty1,dotx2,doty2,p1,p3,p4,p5) *** この関数はスプールに出力しませんので戻り値の文字列を出力してください。 [4-2]ボックスを描画 (x1+dotx1,y1+doty1) <- 左上点行桁ドット (小数点有の場合はdotx1,doty1は無視) (x2+dotx2,y2+doty2) <- 右下点行桁ドット (小数点有の場合はdotx2,doty2は無視) p1 <--- 線の色(0:黒) p3 <--- ペンスタイルの指定(0:無し,1:指定有り) p4 <--- ペンスタイルのコード(0:実線) p5 <--- ペンの太さ(>0) str=$$VsBox^ZVSLPV1(x1,y1,x2,y2,dotx1,doty1,dotx2,doty2,p1,p3,p4,p5) [4-3]ボックス塗り潰しを描画 (x1+dotx1,y1+doty1) <- 左上点行桁ドット (小数点有の場合はdotx1,doty1は無視) (x2+dotx2,y2+doty2) <- 右下点行桁ドット (小数点有の場合はdotx2,doty2は無視) p1 <--- 線の色(0:黒) p3 <--- パレットスイッチ(0:無し,1:指定有り,2:タイルパタン) p4 <--- 塗りつぶしに使う(色/タイル番号) p5 <--- ハッチパタンの時の色 str=$$VsBoxFil^ZVSLPV1(x1,y1,x2,y2,dotx1,doty1,dotx2,doty2,p1,p3,p4,p5) [4-4]円/楕円を描画 (xc+dotxc,yc+dotyc) <- 中心点行桁ドット (小数点有の場合はdotxc,dotycは無視) (xr+dotxr,yr+dotyr) <- 半径行桁ドット (小数点有の場合はdotxr,dotyrは無視) p1 <--- 線の色(0:黒) p2 <--- 塗りつぶし指定(0:無し,1:塗り,2:タイル番号) p3 <--- 塗りつぶしに使う(色/タイル番号) p4 <--- 0 を指定 str=$$VsCircle^ZVSLPV1(xc,yc,xr,yr,dotxc,dotyc,dotxr,dotyr,p1,p2,p3,p4) [4-5]楕円を描画 (xc+dotxc,yc+dotyc) <--- 中心点行桁ドット(小数点可) (xr+dotxr,yr+dotyr) <--- 半径行桁ドット(小数点可) (x1+dotx1,y1+doty1) <--- 開始点行桁ドット(小数点可) (x2+dotx2,y2+doty2) <--- 終了点行桁ドット(小数点可) p1 <--- 線の色(0:黒) p2 <--- 塗りつぶし指定(0:無し,1:塗り,2:タイル番号) p3 <--- 塗りつぶしに使う(色/タイル番号) p5 <--- 0を指定 str=$$VsElipse^ZVSLPV1(xc,yc,xr,yr,dotxc,dotyc,dotxr,dotyr ,x1,y1,x2,y2,dotx1,doty1,dotx2,doty2,p1,p2,p3,p5) [4-6]円弧 (xc+dotxc,yc+dotyc) <--- 中心点行桁ドット(小数点可) (xr+dotxr,yr+dotyr) <--- 半径行桁ドット(小数点可) (x1+dotx1,y1+doty1) <--- 開始点行桁ドット(小数点可) (x2+dotx2,y2+doty2) <--- 終了点行桁ドット(小数点可) p1 <--- 線の色(0:黒) str=$$VsArc^ZVSLPV1(xc,yc,xr,yr,dotxc,dotyc,dotxr,dotyr ,x1,y1,x2,y2,dotx1,doty1,dotx2,doty2,p1) [4-7]塗り潰し (x1+dotx1,y1+doty1) <--- 開始点行桁ドット(小数点可) c1 <--- 領域色 c2 <--- 境界色 str=$$VsPaint1^ZVSLPV1(x1,y1,dotx1,doty1,c1,c2) [4-8]塗り潰し (x1+dotx1,y1+doty1) <--- 開始点行桁ドット(小数点可) c1 <--- タイルパタン c2 <--- 境界色(1) c3 <--- 0 str=$$VsPaint2^ZVSLPV1(x1,y1,dotx1,doty1,c1,c2,c3) [4-9]点を描画 (x1+dotx1,y1+doty1) <--- 点 (x,y) <--- 点のテキスト座標 (dotx,doty) <--- 差分のドット量 c1 <--- 描画する色のパレット番号 str=$$VsPSet^ZVSLPV1(x1,y1,dotx1,doty1,c1) [4-10]描画領域全体を白黒反転 str=$$VsInvAll^ZVSLPV1() [4-11]描画領域の一部を白黒反転 (x1+dotx1,y1+doty1) <--- 左上点行桁ドット (x2+dotx2,y2+doty2) <--- 右下点行桁ドット str=$$VsInvRect^ZVSLPV1(x1,y1,x2,y2,dotx1,doty1,dotx2,doty2) ◆<<<モード設定関数等>>> [5-1]マージン設定関数 dmy=$$VsMgnRect^ZVSLPV1(x1,y1,x2,y2)->スプールに出力 マージン設定(プリンタオープン前) x1=左,y1=上,x2=右,y2=下ドットマージン(印字可能外枠からのドット数) str=$$VsMgnLR^ZVSLPV1(x1,x2) line=$$VsPonBf(splno,setstr) プリンタオープン前に出力 左右マージン設定(プリンタオープン前or後) str=$$VsMgnTB^ZVSLPV1(y1,y2) line=$$VsPonBf(splno,setstr) プリンタオープン前に出力 上下マージン設定(プリンタオープン前or後どちらでも可) *** 直接位置指定ではマージン外でも印字してしまいます [5-2]自動改行 str=$$VsAutoWrap^ZVSLPV1(yesno) yesno=(0:自動改行する(横書き),1:しない(縦書き)) [5-3]プリンタオープン時の方法 str=$$VsDialog^ZVSLPV1(yesno) yesno=(0:デフォルトプリンタ,1:ダイアログボックス) [5-4]印刷ダイアログボックスの内容を変更して初期化 str=$$VsInitDlg^ZVSLPV1(devmode,devname) devmode=デバイスの名前$用紙方向$用紙サイズ$...$ ex. "LASER SHOT LBP-1610$1$3$..." devname=ドライバ名$デバイスの名前$ポート名$ ex. "winspool$Canon LASER SHOT LBP-1610$Ne00:" *** 両面印刷/印刷密度の設定(印刷ダイアログボックス使用時) <*>フォントの高さ指定は正の値は内部リーデングを含まない 負の値は内部リーデングを含むドット高さを指定します。 [5-5]フォントオープン font <-- フォント番号(1から64までの値) STR=$$VsFOpen^ZVSLPV1(font) --> フォントオープン STR --> 設定シーケンス [5-6]フォント削除 font <-- フォント番号(1から64までの値) STR=$$VsFClose^ZVSLPV1(font) ---> フォント削除 STR --> 設定シーケンス [5-7]現在フォント選択(デフォルト状態で) font <-- フォント番号(1から64までの値) STR=$$VsFSelect^ZVSLPV1(font) --> 現在フォント選択(デフォルト状態で) STR --> 設定シーケンス [5-8]現在印刷位置セイブ STR=$$VsSaveXY^ZVSLPV1() --> 現在印刷位置セイブ STR --> 設定シーケンス [5-9]現在印刷位置復元 STR=$$VsRestXY^ZVSLPV1() --> 現在印刷位置復元 STR --> 設定シーケンス [5-10]透過モードON STR=$$VsTransP^ZVSLPV1() ;;;透過モードON;;; STR --> 設定シーケンス [5-11]透過モードOFF STR=$$VsOpaque^ZVSLPV1() ;;;透過モードOFF;;; STR --> 設定シーケンス ■汎用印刷エンジンスプール出力関数 [6-1]プリンタオープン前シーケンス出力関数 $$VsPonBf^ZVSLPV1(splno,setstr) --> プリンタオープン前に出力 標準的な初期化処理等で使用する [6-2]プリンタオープン後シーケンス出力関数 $$VsPonAf^ZVSLPV1(splno,setstr) --> プリンタオープン後に出力 フォントオープン処理等で使用する [6-3]プリンタクローズ前シーケンス出力関数 $$VsPoffBf^ZVSLPV1(splno,setstr) --> プリンタクローズ前に出力 フォントクローズ処理等で使用する [6-4]プリンタクローズ後シーケンス出力関数 $$VsPoffAf^ZVSLPV1(splno,setstr) --> プリンタクローズ後に出力 標準的な終了処理等で使用する ◆<<<文字列属性と印刷データスプール関数>>>[再掲] 横倍角/(*)リバース/ハイライト/アンダーライン/イタリック/通常属性 <esc>#6 / <esc>[7m / <esc>[1m / <esc>[4m / <esc>[2m / <esc>[m (*)リバース/通常属性は副フォントでも表示可能です [7-1]スプールデータを出力(ワークグローバルに出力) splno <---- スプール番号 page <--- 頁番号(1,2,3,...) y <--- 行位置(1,2,3,...) x <--- 桁位置(1,2,3,...) string <-- 出力文字列(シーケンスを含まない) ret=$$WRITE^ZVSSPL(splno,page,y,x,string) [7-2]前シーケンスを出力(ワークグローバルに出力) splno <---- スプール番号 page <--- 頁番号(1,2,3,...) y <--- 行位置(1,2,3,...) x <--- 桁位置(1,2,3,...) string <-- 文字列出力の前に付加するシーケンス ret=$$PUTSEQ1^ZVSSPL(splno,page,y,x,string) [7-3]後シーケンスを出力(ワークグローバルに出力) splno <---- スプール番号 page <--- 頁番号(1,2,3,...) y <--- 行位置(1,2,3,...) x <--- 桁位置(1,2,3,...) string <-- 文字列出力の後に付加するシーケンス ret=$$PUTSEQ2^ZVSSPL(splno,page,y,x,string) [7-4]スプールデータとシーケンスを出力(ワークグローバルに出力) splno <---- スプール番号 page <--- 頁番号(1,2,3,...) y <--- 行位置(1,2,3,...) x <--- 桁位置(1,2,3,...) str1 <-- 文字列出力の前に付加するシーケンス str2 <-- 出力文字列(シーケンスを含まない) str3 <-- 文字列出力の後に付加するシーケンス ret=$$WRITE3^ZVSSPL(splno,page,y,x,str1,str2,str3) ───────────────────────────────────── 2-1 |目次|前ページ|次ページ|