ArcGIS API For Js 出图
在Arcgisserver 10.X版本里面,安装ArcServer之后自带打印模板,不需要自己再单独发布;如果安装之后没用也是可以自己通过ArcToolBox里面带的工具自己再发布,本篇先说一下这个Printing Tools GP服务。为了能让大家尽可能搜索到这些关键字,原谅我的啰嗦。
官方帮助文档地址 https://developers.arcgis.com/javascript/3/jsapi/printtask-amd.html
看官方文档可以知道,
PrintTask主要用到了两个参数,一个服务地址和一个打印参数模板。详细的实现代码我会在下一篇里面贴出来。下面说一下这两个参数:
1.服务地址 这个熟悉server的应该都知道,是发布GP服务的地址,如果你的服务发布好了,打印服务地址是ip:6080/arcgis/rest/services/Utilities/PrintingTools/GPServer/下面,printtask用到的url为 ip:6080/arcgis/rest/services/Utilities/PrintingTools/GPServer/Export%20Web%20Map%20Task
require([2.打印参数模板
"esri/tasks/PrintTask", ...
], function(PrintTask, ... ) {
var url ='http://sampleserver6.arcgisonline.com/arcgis/rest/services/Utilities/PrintingTools/GPServer/Export%20Web%20Map%20Task';
var printTask = new PrintTask(url);
...
});
var params = new PrintParameters();包含了要打印的地图和出图用到的标题、出图单位、比例尺等等。。。。详细的可以看帮助
require([
"esri/map", "esri/tasks/PrintTemplate", "esri/tasks/PrintParameters", ...
], function(Map, PrintTemplate, PrintParameters, ... ) {
var map = new Map( ... );
var template = new PrintTemplate();
template.exportOptions = {
width: 500,
height: 400,
dpi: 96
};
template.format = "PDF";
template.layout = "MAP_ONLY";
template.preserveScale = false;
var params = new PrintParameters();
params.map = map;
params.template = template;
...
});
- MAP_ONLY
- A3 Landscape
- A3 Portrait
- A4 Landscape
- A4 Portrait
- Letter ANSI A Landscape
- Letter ANSI A Portrait
- Tabloid ANSI B Landscape
- Tabloid ANSI B Portrait
这些格式可供选择,其实就是mxd文档,可以自己定义,在server安装目录如C:\Program Files\ArcGIS\Server\Templates\ExportWebMapTemplates底下,会看到这些模板
![](http://images2017.cnblogs.com/blog/862943/201710/862943-20171011191943590-1690047262.png)
可以自己定义,如自己定义一个A4 Landscape ,那么template.layout="A4 Landscape";
这里就说这两个主要的参数,其他详细的可以查看帮助文档。
这里需要注意的是,如果用自己定义的mxd模板,要重启Printing Tools这个服务,不然会读不到新的模板,导致打印出错。
如果打印出来的有乱码,该是汉字的变成了乱码,就需要调整模板里面对应地方的标题格式,把字体改成宋体或者其他字体。
require([
"esri/map", "esri/tasks/PrintTask", "esri/tasks/PrintParameters", ...
], function(Map, PrintTask, PrintParameters, ... ) {
var map = new Map( ... );
var printTask = new PrintTask( ... );
var params = new PrintParameters();
params.map = map;
printTask.execute(params, printResult);
...
});