在 Web 应用程序中打印
从 Web 应用程序打印地图面临许多难题,包括合并多项服务、维护图层可见性设置、将项目添加到布局以及在地图之上绘制图形。为帮助您解决这些难题,ArcGIS Server 包含了一项名为 PrintingTools 的地理处理服务。开发 Web 应用程序时,您可以调用 PrintingTools 服务以获取高制图质量的可打印图像。对于高级打印,可以使用 Python 脚本将 Web 地图转换成 ArcMap 文档 (MXD),然后将 MXD 导出为各种格式以进行打印。
PrintingTools 服务
PrintingTools 是 Utilities 文件夹中预先配置的一项服务。默认情况下,此服务处于停止状态。如果要支持打印工作流,您必须使用 ArcGIS Desktop 或 ArcGIS Server Manager 启动服务。
ArcGIS Web API 提供了若干可与 PrintingTools 服务进行通信以获取可打印地图的小组件。您提供 PrintingTools 服务的 URL,小组件可完成剩下的工作。
如果需要在 Web API 外调用 PrintingTools 服务,或者如果希望直接从 ArcGIS Desktop 或 Python 脚本运行其基础工具“导出 Web 地图”,则必须提供地图当前状态的“JavaScript 对象标记法”(JSON) 定义(符合 Esri ExportWebMap 规范)。这是一个高级工作流,如果使用的是 Web API 则不需要该工作流。
PrintingTools 附带了一组预定义的地图布局以供选择。如果要使用您自己的地图布局,则可以发布一个与 PrintingTools 类似的、您自己的 Web 地图打印服务,并将其指向您自己的布局文件夹。如果希望了解相关详细信息,请参阅使用自己的布局进行打印和教程:发布用于打印的其他服务。
如果对地图服务进行缓存,PrintingTools 服务可能会使用过低的分辨率(如,96 DPI)而不适合大幅面或高质量打印。要以较高分辨率进行打印,建议在缓存的地图服务上启用动态图层。这样,打印服务便可以通过所需分辨率(如,300 DPI)获取地图图像(通过导出地图请求),而不是获得分辨率较低的切片。有关详细信息,请参阅关于动态图层。
使用 Python 的高级打印
进行高级打印时,根本不需要使用 PrintingTools;而是使用 ArcGIS 附带的 Python arcpy.mapping 模块中的 ConvertWebMapToMapDocument 功能。文档转换后,完整的 Web 地图将存在于地图文档中。随即可对地图文档进行进一步修改,然后将其最终打印或导出为常用格式(如 PDF)。
通常,ConvertWebMapToMapDocument 功能用于以本地矢量数据替换服务图层、创建地图册、控制图例外观以及使用高级选项导出不同格式。
要使 Python 脚本对 Web 应用程序可用,可以通过 ArcGIS Server 地理处理服务显示脚本。有关详细信息,请参阅 Web 地图高级打印。