在官网ArcGIS API demo中看到了地图打印的例子,打印功能的组件各种选项已经做得很全面了,demo用的是ArcGIS Online的打印服务,如果在内网开发的话,这样肯定是不行的。
var print = new Print({
view: view,
// specify your own print service
printServiceUrl: "https://utility.arcgisonline.com/arcgis/rest/services/Utilities/PrintingTools/GPServer/Export%20Web%20Map%20Task"
});
经过搜索发现,在ArcGIS Server上就有这个地图打印的服务,只是默认没有开启,将其开启就可以了。主要需要设置ArcGIS Server跨域的——ArcGIS API for JS 4.7开发过程中的跨域问题与解决
具体的各项额外的设置,用户可以点击PrintingTools,进行额外的详细设置,不更改默认设置也能实现打印功能。
开启打印服务后,进入功能就找到服务的地址,下图红线中就是,在使用的时候需要在后面加上"/Export%20Web%20Map%20Task"。
下面看结果,我是使用的是ArcGIS Server默认发布的 SampleWorldCities地图服务,对其进行打印:
点击导出,下面会提示正在进行,过一会下面的文字可以点击了,点击就会弹出打印好的地图,在新的界面点击下载就可以获取你打印的地图了。
在给图添加注记信息的时候,可能最终打印会出现中文乱码,需要去ArcGIS Server安装目录下Templates\ExportWebMapTemplates路径下,找到对应尺寸的模版,将模版中的对应的地图字体更改,然后重启打印服务。