サポート > PC-MAPPING ヒント集 > スクリプト > スクリプトによるウィンドウズプリンター印刷
スクリプトによるウィンドウズプリンター印刷
PC-Mappingで印刷するには、[印刷]-[印刷設定]-[ウィンドウズプリンター]を実行し、各種設定を行い、[印刷]-[印刷モード]-[ウィンドウズプリンター印刷モード]を実行し、印刷枠を調整、[印刷]-[印刷実行]-[印刷実行]を実行し、印刷を行います。
さらに、[印刷]-[印刷設定]-[ウィンドウズプリンター]の各種設定を[印刷]-[印刷設定]-[設定登録・呼び出し]に登録・印刷、[印刷]-[印刷実行]-[クイック印刷]のダイアログボックスで設定から印刷まで簡潔に行う、[印刷]-[印刷実行]-[矩形ポリゴン連続印刷]で矩形ポリゴンを印刷枠として連続印刷するなど、スクリプトを使用しなくても、簡単に設定・印刷する機能は充実しています。
ここでは、PcmAutoPrintInfoClass:WinPrintInfo()メソッド、PcmAutoPcmDocClass:GoPrintWin()の使用例として、各種ダイアログボックスは表示せず、[印刷]-[印刷設定]-[ウィンドウズプリンター]の各種設定・印刷サイズ・印刷縮尺は固定された状態で、現在表示されている画面領域の中央を印刷・印刷プレビューするスクリプトを紹介します。
■ サンプル
サンプル[script47.zip(約54KB)]をダウンロードする
sample.pcm:サンプルプロジェクト
整飾プロジェクト.pcm:サンプル整飾プロジェクト
PcmGoPrintWin.js:サンプルJScript

■ 準備
  1. ダウンロードしたファイルを解凍します。
    ここでは、「C:\sample\script47」とします。

  2. PC-Mappingを起動します。

  3. 「C:\sample\script47\sample.pcm」を開きます。

  4. 「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」コマンド(△は半角スペース)を実行し、印刷モードを解除します。

■ 実行
  1. ベクターウィンドウをアクティブにします。

  2. [スタート]-[プリンター設定の登録]をクリック、「プリンター設定の登録」ダイアログボックスを表示します。

  3. 【追加】-【ウィンドウズプリンター】ボタンをクリック、用紙サイズ:A4横のプリンターを設定し、【OK】ボタンをクリックします。

  4. 登録したプリンターを選択し、【デフォルトのプリンターにする】ボタンをクリックします。

  5. コマンドラインバーが表示されているか確認します。
    表示されていなければ、[ワークスペース]-[コマンドバー]-[コマンドラインバー]を実行します。

  6. コマンドラインバーに「C:\sample\script47\PcmGoPrintWin.js△整飾プロジェクト.pcm△1」(△は半角スペース)と記述し、実行します。
    パラメーター「整飾プロジェクト.pcm」は、「整飾プロジェクトファイル名」です。
    アクティブなプロジェクトファイルと同一フォルダーにある「整飾プロジェクト.pcm」を整飾プロジェクトとして使用します。
    パラメーター「1」は「印刷方法」です。
    • 「1」は「印刷プレビュー」を表示します。
    • 「0」にすると「印刷実行」します。

  7. すると、現在表示されている画面領域の中央を中心とした印刷縮尺1:500の印刷プレビューを表示します。

  8. 【印刷実行】または【終了】ボタンをクリック、印刷プレビューを閉じ、処理を終了します。