arcgis server发布自定义打印模板及利用ArcGIS API javascript使用自定义打印服务打印地图

0
分享 2020-09-04
本篇来介绍下利用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/esr ... gt%3B
<script src="https://code.jquery.com/jquery ... gt%3B
<script src="https://js.arcgis.com/4.12/ini ... gt%3B

<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/ser ... ot%3B
});
map.add(layer);

$("#print").click(function(){
exportMap();
})
var printUrl = "https://wl.arcgisonline.cn/ser ... 3B%3B
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

</body>
</html>

打印结果:


文章来源:https://blog.csdn.net/qq_40376439/article/details/104547016

1 个评论

楼主,这个demo多引入了esri/geometry/Point。

要回复文章请先登录注册