ArcGIS API For Javascript GP工具 Printing Tools匯出地圖或者列印地圖(一):GP 服務Printing Tools
阿新 • • 發佈:2018-11-27
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([params.map=map;這裡的map就是map物件,直接把要列印的map傳過來就行了;exportions裡面設定地圖的寬高和畫素,format設定圖片格式,提供的有pdf | png32 | png8 | jpg | gif | eps | svg | svgz 這些格式可供選擇;layout是列印模板有
"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底下,會看到這些模板
可以自己定義,如自己定義一個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);
...
});