1. 程式人生 > >ArcGIS API For Javascript GP工具 Printing Tools匯出地圖或者列印地圖(一):GP 服務Printing Tools

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);
 
...
});