本篇來介紹下利用arcgis server釋出自定義列印模闆及利用ArcGIS API for javascript調用自定義列印工具的過程。
實作步驟:
1、在arcmap中準備好自定義的地圖模闆并儲存,可以放在server的安裝目錄\Program Files\ArcGIS\Server\Templates\ExportWebMapTemplates下,也可以放到其他位置。

2、在ArcToolBox裡,打開System Toolboxes/Server Tools.tbx/Printing/Export Web Map工具。
3、web map as json 為空,指定自定義模闆。
4、執行後找到gp運作結果右鍵釋出gp服務,設定參數
5、釋出結果
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>
列印結果:
更多gis内容可以關注微信公衆号: GIS學習小屋