ArcGIS API For Javascript GP工具 Printing Tools导出地图或者打印地图(一):GP 服务Printing Tools

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([
 
"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);
 
...
});
2.打印参数模板   
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;
 
...
});
params.map=map;这里的map就是map对象,直接把要打印的map传过来就行了;exportions里面设置地图的宽高和像素,format设置图片格式,提供的有pdf | png32 | png8 | jpg | gif | eps | svg | svgz 这些格式可供选择;layout是打印模板有
  • 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底下,会看到这些模板


可以自己定义,如自己定义一个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);
 
...
});


猜你喜欢

转载自blog.csdn.net/gis0911178/article/details/78427089