天天看點

arcgis server釋出自定義列印模闆及利用ArcGIS API javascript使用自定義列印服務列印地圖

      本篇來介紹下利用arcgis server釋出自定義列印模闆及利用ArcGIS API for javascript調用自定義列印工具的過程。

實作步驟:

1、在arcmap中準備好自定義的地圖模闆并儲存,可以放在server的安裝目錄\Program Files\ArcGIS\Server\Templates\ExportWebMapTemplates下,也可以放到其他位置。

arcgis server釋出自定義列印模闆及利用ArcGIS API javascript使用自定義列印服務列印地圖

2、在ArcToolBox裡,打開System Toolboxes/Server Tools.tbx/Printing/Export Web Map工具。

arcgis server釋出自定義列印模闆及利用ArcGIS API javascript使用自定義列印服務列印地圖

3、web map as json 為空,指定自定義模闆。

arcgis server釋出自定義列印模闆及利用ArcGIS API javascript使用自定義列印服務列印地圖

4、執行後找到gp運作結果右鍵釋出gp服務,設定參數

arcgis server釋出自定義列印模闆及利用ArcGIS API javascript使用自定義列印服務列印地圖
arcgis server釋出自定義列印模闆及利用ArcGIS API javascript使用自定義列印服務列印地圖

5、釋出結果

arcgis server釋出自定義列印模闆及利用ArcGIS API javascript使用自定義列印服務列印地圖

6、 前端利用ArcGIS API for javascript調用剛釋出的列印工具來列印地圖,使用"esri/tasks/PrintTask"類指定列印任務,及"esri/tasks/support/PrintParameters"指定列印參數,"esri/tasks/support/PrintTemplate"指定列印布局模闆選項。

具體示例:

<!DOCTYPE html>
<html>
<head>
   <meta charset="utf-8">
   <meta name="viewport" content="initial-scale=1,maximum-scale=1,user-scalable=no">
   <title>test</title>
   <style>
       html,
       body,
       #viewDiv {
           padding: 0;
           margin: 0;
           height: 100%;
           width: 100%;
       }
       #print{
           position: absolute;
           top: 10px;
           right: 10px;
           z-index: 999;
           width: 60px;
           height: 40px;
           background-color: #fff;
           text-align: center;
           line-height: 40px;
           cursor: pointer;
           border: 1px solid #ccc;
       }
   </style>
   <link rel="stylesheet" href="https://js.arcgis.com/4.12/esri/css/main.css">
   <script src="https://code.jquery.com/jquery-3.1.1.min.js"></script>
   <script src="https://js.arcgis.com/4.12/init.js"></script>

   <script>
       require([
           "esri/config",
           "esri/Map",
           "esri/views/MapView",
           "esri/layers/FeatureLayer",
           "esri/Graphic",
           "esri/geometry/Point",
          "esri/tasks/PrintTask",
           "esri/tasks/support/PrintTemplate",
           "esri/tasks/support/PrintParameters",
           "dojo/domReady!"
       ], function (esriConfig,Map, MapView,FeatureLayer, Graphic, PrintTask,PrintTemplate,PrintParameters) {
            var map = new Map({
               basemap: "osm"
           });
           var view = new MapView({
               container: "viewDiv",
               map: map,
               zoom: 5,
               center: [110, 30]
           });
           var layer = new FeatureLayer({
   		      url:"https://wl.arcgisonline.cn/server/rest/services/wl/testpoint/FeatureLayer"
             });
           map.add(layer);

           $("#print").click(function(){
               exportMap();
           })
           var printUrl = "https://wl.arcgisonline.cn/server/rest/services/wl/ExportWebMap0/GPServer/Export%20Web%20Map";
           var printTask = new PrintTask({
               url: printUrl
           });

           var template = new PrintTemplate({
               format: "pdf",
               exportOptions: {
   			width:10000,
   			height:8500,
               dpi: 100
               },
               layout: "customprint",
               layoutOptions: {
               titleText: "test",
               authorText: "Sam"
               }
           });

           var params = new PrintParameters({
               view: view,
               template: template
           });

           function exportMap(){
               printTask.execute(params).then(printResult, printError);
           }
           function printResult(value) {
             window.open(value.url);
         }
         function printError(value) {
             alert(value.message)
         }
       });
   </script>
</head>

<body>
   <div id="viewDiv">
       <div id="print">print</div>
   </div>
</body>
</html>
           

列印結果:

arcgis server釋出自定義列印模闆及利用ArcGIS API javascript使用自定義列印服務列印地圖

更多gis内容可以關注微信公衆号: GIS學習小屋

繼續閱讀