スクリプトによるウィンドウズプリンター印刷
PC-Mappingで印刷するには、[印刷]-[印刷設定]-[ウィンドウズプリンター]を実行し、各種設定を行い、[印刷]-[印刷モード]-[ウィンドウズプリンター印刷モード]を実行し、印刷枠を調整、[印刷]-[印刷実行]-[印刷実行]を実行し、印刷を行います。
さらに、[印刷]-[印刷設定]-[ウィンドウズプリンター]の各種設定を[印刷]-[印刷設定]-[設定登録・呼び出し]に登録・印刷、[印刷]-[印刷実行]-[クイック印刷]のダイアログボックスで設定から印刷まで簡潔に行う、[印刷]-[印刷実行]-[矩形ポリゴン連続印刷]で矩形ポリゴンを印刷枠として連続印刷するなど、スクリプトを使用しなくても、簡単に設定・印刷する機能は充実しています。
ここでは、PcmAutoPrintInfoClass:WinPrintInfo()メソッド、PcmAutoPcmDocClass:GoPrintWin()の使用例として、各種ダイアログボックスは表示せず、[印刷]-[印刷設定]-[ウィンドウズプリンター]の各種設定・印刷サイズ・印刷縮尺は固定された状態で、現在表示されている画面領域の中央を印刷・印刷プレビューするスクリプトを紹介します。
- ■ サンプル
サンプル[script47.zip(約54KB)]をダウンロードする
 | sample.pcm | :サンプルプロジェクト |
 | 整飾プロジェクト.pcm | :サンプル整飾プロジェクト |
 | PcmGoPrintWin.js | :サンプルJScript |
- ■ 準備
-
- ダウンロードしたファイルを解凍します。
ここでは、「C:\sample\script47」とします。
- PC-Mappingを起動します。
- 「C:\sample\script47\sample.pcm」を開きます。
- 「C:\sample\script47\PcmGoPrintWin.js」を開きます。
- ■ 解説
-
- 要点1
- var pis = CreatePrinterInfos();
:
if(!prt.SetPrinter(pis, pisID)){
PC-Mapping[スタート]-[プリンター設定の登録]の「プリンター設定の登録」ダイアログボックスに登録・デフォルト設定されているプリンターへ印刷するための設定を行います。
AppClass:CreatePrinterInfos()メソッドでプリンター設定オブジェクトを取得、PcmAutoPrinterInfosClass:GetNumOfInfo()メソッドでプリンターが登録されているか確認、PcmAutoPrinterInfosClass:GetDefault()メソッドでデフォルトプリンター設定を取得します。
これをプロジェクトのプリンターに設定するためには、PcmAutoProjectClass:CreatePrint()メソッドで取得したプリントオブジェクトにPcmAutoPcmPrintClass:SetPrinter()メソッドで設定します。
- 要点2
- var tempPrjPath = pcmGetFolder(prj.PathName) + tempPrjFile;
:
prj2 = null;
整飾プロジェクトの前景レイヤーの座標系情報から紙面サイズ「縦」「横」・「縮尺」を取得し、印刷時に用紙サイズ「縦」「横」・「縮尺」に使用します。
AppClass:CreateProject()メソッドを実行し、プロジェクトオブジェクトを作成、PcmAutoProjectClass:Load()メソッドで読み込みます。
PcmAutoProjectClass:GetCurrentLayer()メソッドで前景レイヤーオブジェクトを取得します。
PcmAutoPcmLayerClass:GetCopyOfCoordInfo()を実行し、座標系情報オブジェクトを取得、PcmAutoCoordInfoClass:InfoDoubleプロパティで紙面サイズ「縦」「横」・「縮尺」を取得します。
読み込んだプロジェクトは、プロジェクトオブジェクトにnullを代入して破棄します。
- 要点3
- var lyr = prj.GetCurrentLayer();
:
var temp = ap.Add(view.GetArea2(coord, i), view.GetArea2(coord, i+1), 0.00, coord);
現在表示されている画面領域の中央の座標値を取得します。
PcmAutoProjectClass:GetCurrentLayer()メソッドを実行し、前景レイヤーオブジェクトを取得、PcmAutoPcmLayerClass:CreateArrayPos()メソッドで座標点配列オブジェクトを取得します。
PcmAutoPcmDocClass:GetView()メソッドを実行し、ベクター表示ビューオブジェクトを取得、PcmAutoPcmViewClass:GetArea2()メソッドで表示領域の左下・右上座標点を取得します。
- 要点4
- var pi = prj.CurrentPrintInfo();
:
prj.CurrentPrintInfo = pi;
プロジェクトのウィンドウズプリンターに各種設定を行います。
PcmAutoProjectClass:CurrentPrintInfoプロパティでプロジェクトの印刷設定オブジェクト(ウィンドウズプリンターだけでなく、ビットマップ出力設定等も含む)を取得します。
PcmAutoPrintInfoClass:WinPrintInfoプロパティを実行し、ウィンドウズプリンター印刷設定オブジェクトを取得、PcmAutoWinPrintInfoClass:各種メソッド・プロパティを使用して設定を行います。
例えば、PcmAutoWinPrintInfoClass:PrintAreaCx/Cyプロパティは、表示領域の左下・右上座標点から中心座標点を計算、代入しています。
PcmAutoWinPrintInfoClass:PrintAreaDx/Dyプロパティは、紙面サイズ「縦」「横」(mm)を(m)にし、縮尺分母を掛けて、印刷領域「縦」「横」(実座標値)を計算、代入しています。
設定を行ったウィンドウズプリンター印刷設定オブジェクトは、PcmAutoPrintInfoClass:WinPrintInfoプロパティで印刷設定オブジェクトに反映します。
さらに、その印刷設定オブジェクトは、PcmAutoProjectClass:CurrentPrintInfoプロパティでプロジェクトに反映します。
- 要点5
- var temp = doc.GoPrintWin();
印刷を実行します。
PcmAutoPcmDocClass:GoPrintWin()メソッドを実行します。
印刷できない場合は、戻り値にtrueを返しているかご確認下さい。
falseの場合、PcmAutoWinPrintInfoClass:各種メソッド・プロパティで必要な情報が設定されていない可能性があります。
- 要点6
- var temp = Docmd("wprint 1;PreviewImage;"); //ウィンドウズプリンター印刷モードON、印刷プレビュー
var temp = doc.WaitPrintPreview(-1); //印刷プレビューを閉じるまで待つ
var temp = Docmd("wprint 0;"); //ウィンドウズプリンター印刷モードOFF
印刷プレビューを表示します。
印刷プレビューを表示するメソッド・プロパティはありませんので、[印刷]-[印刷モード]-[ウィンドウズプリンター印刷モード]にする「wprint△1」コマンド(△は半角スペース)、[印刷]-[印刷実行]-[イメージプレビュー]を実行する「PreviewImage」コマンドを使用します。
PcmAutoPcmDocClass:WaitPrintPreview()メソッドを実行し、印刷プレビューを閉じるまで待ちます。
印刷プレビューを閉じたら、「wprint△0」コマンド(△は半角スペース)を実行し、印刷モードを解除します。
- ■ 実行
-
- ベクターウィンドウをアクティブにします。
- [スタート]-[プリンター設定の登録]をクリック、「プリンター設定の登録」ダイアログボックスを表示します。
- 【追加】-【ウィンドウズプリンター】ボタンをクリック、用紙サイズ:A4横のプリンターを設定し、【OK】ボタンをクリックします。
- 登録したプリンターを選択し、【デフォルトのプリンターにする】ボタンをクリックします。
- コマンドラインバーが表示されているか確認します。
表示されていなければ、[ワークスペース]-[コマンドバー]-[コマンドラインバー]を実行します。
- コマンドラインバーに「C:\sample\script47\PcmGoPrintWin.js△整飾プロジェクト.pcm△1」(△は半角スペース)と記述し、実行します。
パラメーター「整飾プロジェクト.pcm」は、「整飾プロジェクトファイル名」です。
アクティブなプロジェクトファイルと同一フォルダーにある「整飾プロジェクト.pcm」を整飾プロジェクトとして使用します。
パラメーター「1」は「印刷方法」です。
- 「1」は「印刷プレビュー」を表示します。
- 「0」にすると「印刷実行」します。
- すると、現在表示されている画面領域の中央を中心とした印刷縮尺1:500の印刷プレビューを表示します。
- 【印刷実行】または【終了】ボタンをクリック、印刷プレビューを閉じ、処理を終了します。
|