FAQ
プリンターの用紙サイズを変更

ナレッジ番号:3062 | 登録日:2023/05/29 | 更新日:2023/12/28

概要

ArcMap からマップを印刷する際のプリンターの用紙サイズを変更するサンプル コードをご紹介いたします。
※ArcMap アドインでのみ使用可能です。

用紙サイズは、ArcMap [ファイル] → [ページ設定/印刷設定] で確認できます。

ArcMap [表示] メニュー → [レイアウト ビュー] で、レイアウト ビューへと切り替えることができます。

Image

サンプル コード

下記のサンプル コードを使用する前に、データが追加してあるマップ ドキュメント(*.mxd)を開き、レイアウト ビューに切り替えて実行してください。

サンプルでは、用紙サイズを「A3 (297x420mm)」に変更し、ArcMap のレイアウトのページ サイズを用紙と同じサイズに設定しています。

//使用する名前空間
using ESRI.ArcGIS.ArcMapUI;
using ESRI.ArcGIS.Carto;
using ESRI.ArcGIS.esriSystem;
using ESRI.ArcGIS.Output;

protected override void OnClick()
{  
   //ArcMap アプリケーションにアクセス
   IMxApplication pMxApplication = ArcMap.ThisApplication;

   //マップ ドキュメントにアクセス
   IMxDocument pMxDocument = ArcMap.Document;

   //プリンターにアクセス
   IPrinter pPrinter = pMxApplication.Printer;
               
   //プリンターの用紙設定にアクセス
   IPaper pPaper = (IPaper)pPrinter.Paper;

   //変更したい用紙のサイズを指定
   string sTargetForm = "A3 (297x420mm)";
               
   //用紙サイズのリストにアクセス
   IEnumNamedID pEnumNamedID = (IEnumNamedID)pPaper.Forms;
   pEnumNamedID.Reset();

   //リストの最初のIDと名前を取得
   string sFromName;
   int iFormID = pEnumNamedID.Next(out sFromName);

   //指定したサイズと同じ ID をリストから取得
   while ((sFromName.IndexOf(sTargetForm) < 1) && (iFormID > 0))
   { 
       //指定したサイズの ID をリストから見つけた場合
       if (sFromName == sTargetForm)
       {
           //ループを抜ける
           break;
       }
       //見つからない場合は次の ID をチェック
       iFormID = pEnumNamedID.Next(out sFromName);
   }
    
   //int 型から short 型にキャストし、用紙サイズを設定
   pPaper.FormID = (short)iFormID;

   //レイアウトのページ サイズをプリンターと同じサイズに設定
   IPageLayout pPageLayout = pMxDocument.PageLayout;
   IPage pPage = pPageLayout.Page;
   pPage.FormID = esriPageFormID.esriPageFormSameAsPrinter;

   //変更内容をレイアウト ビューに設定
   IActiveView pActiveView = (IActiveView)pPageLayout;
   pActiveView.PrinterChanged(pPrinter);
}

メタデータ

種類

製品