ArcGIS Web API 中的 PrintingTools 服务及其客户端打印微件用于基本打印。在打印工作流中,如果 Web 地图需要使用高级选项进行修改或导出,请使用 Python arcpy 模块中的转换函数:ArcMap 使用 ConvertWebMapToMapDocument,ArcGIS Pro 使用 ConvertWebMapToArcGISProject。
ArcGIS 中的 Web 地图打印取决于将要表示为 JSON(即 JavaScript 对象表示法)的 Web 地图的能力。Esri 已创建 ExportWebMap 规范,该规范定义如何使用打印范围和图层信息将为 Web 地图构建 JSON 表达式。ArcGIS Web API 能够读取您当前的 Web 地图并为您制作 JSON 表达式。在简单打印情况下,ArcGIS Server 的 PrintingTools 服务读取 JSON 并返回可打印的地图图像。
在高级打印情况下,不必将 Web 地图 JSON 发送至 PrintingTools 服务。相反,您可以将 JSON 转换为 ArcMap 文档 (.mxd) 或 ArcGIS Pro 工程 (.aprx)。
使用 Python 将 Web 地图转换为 ArcMap 地图文档
要将 Web 地图 JSON 转换为地图文档 (.mxd),请使用 ConvertWebMapToMapDocument 函数。Web 地图转换后,地图文档中会出现 Web 地图的完整状态。之后,可在打印文档之前对其进行进一步修改,或者使用 ExportToPDF 或 ExportToPNG 等函数将其导出。您甚至可以选择在打印地图前将其添加至地图册,或使用您自己的矢量图层切换地图中的一些服务图层。
Esri 提供了演示整个高级导出和打印工作流的教程。它们介绍如何创作过渡模板地图文档、创作 Python 脚本、创建地理处理服务以及创建 Web 应用程序:
使用 Python 将 Web 地图转换为 ArcGIS Pro 工程
要将 Web 地图 JSON 转换为 ArcGIS Pro 工程 (.aprx),请使用 ConvertWebMapToArcGISProject 函数。Web 地图转换后,工程中存在 Web 地图的完整状态。之后,可在打印 Web 地图之前对其进行进一步的修改,或使用其他 Python 函数将其导出。与 ArcMap 一样,也可以在打印地图前将其添加至地图册,或使用您自己的矢量图层切换地图中的一些服务图层。
有关更详细的介绍、情景和代码示例,请参阅使用 arcpy.mp 打印 Web 地图,其中介绍了如何创作过渡布局模板、为 Web 地图创作 Python 脚本以及创建 Web 工具和 Web 应用程序。
从网站上调用您的脚本
写入用于打印的 arcpy 脚本后,ArcGIS Enterprise 会提供各种地理处理服务,允许将您的脚本、工具和模型显示为 Web 服务。这样便可以从 ArcGIS Web API 中轻松地调用它们。
您可以选择在地理处理脚本工具中封装您的 Python 打印脚本。尝试运行您的工具,然后将结果作为 ArcGIS Enterprise 地理处理服务发布出来。
开发此类地理处理脚本工具时的最简单方法是确保它所显示的参数与开箱即用的 PrintingTools 服务的参数相同,或为其子集。输入的 JSON 参数是所需最小要求参数。如果您这样设计您的服务,来自 ArcGIS Web AppBuilder 的打印微件和 ArcGIS Web 制图 API 和 Web 查看器中的打印任务将能够使用您的服务,而无需获取自定义编码。