ArcGIS打印服务PrintingTools解决方案总结

0
分享 2023-11-16
 本篇文章主要是记录Enterprise环境下,在Portal for ArcGIS的Map Viewer上打印地图服务所碰到的诸多问题。

ArcGIS打印服务若干问题

由于未进行实时的截图和错误日志记录,因此,这里仅简单列举一下存在的问题:

1)无法打印,即打印报错
2)可打印,但打印乱码
3)可打印,但对于缓存服务来说,打印结果不是实际的缓存服务,而是当前缓存服务中的数据

上述问题的存在和解决都基于ArcGIS Enterprise 10.6.1, 之前的版本可能存在差别

【解决方案】
 
打印报错

打印报错的原因有很多:
1 Enterprise自签名证书导致的问题
2 打印服务获取时间较长,可能存在被阻塞的情况
针对这两种情况,解决方案如下:

自签名证书导致的错误

对于Enterprise自签名证书导致的错误,多存在于如下场景:

1)未对Enterprise设置本地的打印服务
2)待打印的webmap的json构造串中包含的服务的url是https方式的
3)这里的证书为自签名证书
4)这一证书和PrintingTools所在的ArcGIS for Server节点本身的证书不一致。

解决方案如下:
1)登录Portal for ArcGIS的,点击组织 > 设置 > Utility Services ,在Printing下设置为您自己的打印服务

1.png


2)在浏览器中访问您被打印的服务的地址,例如:
https://linux111.esrichina.com ... erver
3)打开证书信息,在详细信息选项卡上,点击复制到文件,而后通过连续点击下一步,获得一个后缀名为 cer 的文件
4) 登录 ArcGIS for Server admin页面,点击machines* > 【机器名】> sslcertificates > importRootOrIntermediate选择上一步中导出的cer文件设置别名,最后点击Import**即可
5)重启 ArcGIS for Server

打印服务获取时间较长,可能存在被阻塞的情况
这种情况下,只需登录PrintingTools服务所在的ArcGIS for Server Manager界面,打开这一PrintingTools服务的服务属性,而后点击Pooling,增大The maximum time a client will wait to get a service的值。

2.png


可打印,但设置中文字体如微软雅黑后乱码
在小编的测试场景中,ArcGIS Enterprise是10.6.1版本,且整个Enterprise部署在Linux环境如Centos 7.5上,且当前的操作系统是英文。导致问题的根因是当前操作系统上不存在打印所设置的微软雅黑字体。
在进入这一问题的解决方案之前,小编先给出如下友情提示:
1)在10.5.1及之前的版本中,如果您想要更改打印地图模板,如字体设置,那么直接修改【ArcGIS for Server 安装目录】/Templates/ExportWebMapTemplates下的mxd的字体设置而后重启打印服务即可。但是,在 10.6.1环境下,对于系统自带的打印服务即Utilities下的Printingtools而言,如果您希望修改打印服务的地图模板,那么通过替换【ArcGIS for Server 安装目录】/Templates/ExportWebMapTemplates下的模板是不起效的(有兴趣的筒子们请一起帮忙验证一下)。您必须发布一个自定义的打印服务。不过,对于发布的自定义打印服务来说,替换打印模板的方法是生效的。
关于大部自定义打印服务的具体发布方法,可参见如下链接:
http://desktop.arcgis.com/en/a ... g.htm
2)打印服务中的Layout_Template列表信息是在发布阶段确定的。默认情况下,增删模板文件下的模板,无法更改这里的选项信息
3) 在10.6.1环境下,默认打印模板即字体设置为Arial的情况下,中文也是不存在乱码的,至少在Portal中打印地图是正常显示的。因此,大家不必一开始就替换打印模板啦。

OK。友情提示完毕,还请有兴趣的筒子们一起帮忙捉虫(验证)。

书回正题。在小编的当前环境下,解决微软雅黑乱码的方案如下:

1)将雅黑字体拷贝到Linux环境下【ArcGIS for Server安装目录】/fonts目录中

3.png


2)重启ArcGIS for Server系统服务
3)需要英文操作系统环境中的ArcMap(也可对中文操作系统进行英文切换)
4)修改待用的打印模板,设置字体信息如下图。是的!就是要修改为英文的字体信息。

4.png


5)重新发布打印服务,或者替换之前发布的自定义打印服务中的打印模板
6) 如果步骤3)中是替换的方式,请重启这一打印服务

可打印,但对于缓存服务,打印结果不是实际的缓存服务

这一问题出现的根本原因是:默认情况下,即便对于缓存服务而言,在打印阶段也是通过动态渲染地图服务本身实现的。
最常见的情况如下:对于缓存服务而言,当我们在生产环境中实际部署时,为了数据安全考虑,往往会发布一个仅包含外边界矩形框的地图服务,而后将先前切好的缓存切片迁移过来,以对外提供。但是,默认情况下,实际的打印请求中则是对这一包含外边界矩形框的地图服务的打印出图,而不是缓存切片的打印出图。
要避免如上情况,对于所有的缓存服务,请执行如下操作:
1)登录 arcgis manager
2)编辑缓存服务属性,点击Capabilities,取消勾选Dynamic Workspaces下的 Allow per request modification of layer order and symbology

5.png


3)对于已经发布好的缓存服务,您也可通过服务的rest信息中的"supportsDynamicLayers"这一属性进行判断。

6.png


结束之前,再安利一个不太常见的打印出错的小问题:当被打印的服务是通过正向代理的方式接入您的内网环境中,而后需要通过内网环境中的printing service进行打印时,请参见如下文章进行设置:
https://enterprise.arcgis.com/en/server/latest/deploy/windows/using-a-forward-proxy-server-with-arcgis-server.htm

其中,重要的设置点是切换至arcgis账户!切换至arcgis账户!!切换至arcgis账户!!!:

7.png



当然了,不同的配置环境所碰到问题往往都是不一样的。
 
遇到问题时,莫着急,莫上慌,开动你的大脑吧!

0 个评论

要回复文章请先登录注册