环境:来源于工作过程,使用的API是 arcgis js 3.* 3系API,4.*暂时没测试;
1、数据与打印服务跨域情况下,不能打印问题。
一般情况下,我们发布的数据服务和打印服务是在一台服务器上,但业务中经常会调用别家单位的服务,要实现打印怎么办?
解决:通过设置通用代理,arcgis js api提供了基于.NET /JAVA的代理,在proxy.config里面设置好服务的IP即可。
2、打印中文乱码。
这个情况一般都是服务器的打印模板MXD字体默认是ESRI美国的字体,需要更改为中文编码格式,比如:宋体,
修改路径:安装ArcGIS Server的文件夹,\ArcGIS\Server\Templates\ExportWebMapTemplates\,在下面修改要用到的排版样式的字体和排版布局。
3、PictureMarkerSymbol等一些自定义样式,使用自己的图标无法打印出来。
这里由于打印内部代码没有支持自定义图标,所以一般只能显示在GraphicsLayer中,但无法打印出来。
解决:使用arcgis中SimpleMarkerSymbol的默认样式,虽然图标没有那么明确,但可以打印。
4、图例打印出来显示 override。
一般使用graphicsLayer来显示,如果不过滤那么,打印的时候一般都是以override1、override2的形式来显示图例。这个问题主要就是因为内部自动使用ColorInfo渲染,可以改变渲染方式来实现。
解决:1) 使用renderer代替setSymbol来渲染颜色;2)还一种方式:设置PrintTemplate的LayoutOptions里面参数LegendLayers为服务图层,即不显示GraphicsLayer的图例。
5、打印服务图层,图例均不能显示,比如一个土地利用规划,N个图例都不显示。
一般我们显示图层都是自己设置图层名称,直接使用Layer.id=图层名称 ,来加载设置,不显