可通过以下几种方式从 web 应用程序生成可打印的文档。默认情况下,ArcGIS Server 包括名为 PrintingTools 的地理处理服务。Web 应用程序可以调用 PrintingTools 服务以获取可打印的文档。还可以使用您自己的而非默认 PrintingTools 服务中的布局创建自定义打印服务。对于高级打印,可以使用 Python 脚本将 Web 地图转换成 ArcMap 文档 (MXD),然后将 MXD 导出为各种格式以进行打印。
可以为 Portal for ArcGIS、web 应用程序模板、Web AppBuilder for ArcGIS 和使用 ArcGIS web API 而创建的应用程序配置打印。有关为门户(包括使用 Web AppBuilder 或 web 应用程序模版创建的应用程序)配备打印功能的详细信息,请参阅门户管理员指南中的配置门户以打印地图。
PrintingTools 服务
PrintingTools 是 Utilities 文件夹中预先配置的一项服务,可使用其中一个预定义的地图布局来创建可打印的文档。这些布局包括纵向和横向的使用 8.5 * 11 英寸、11 * 17 英寸、A3 和 A4 纸张大小的基本设计。每个布局都包含指北针、比例尺和比例、图例、日期以及标题。PrintingTools 服务所支持的输出格式包括 PDF(地理配准)、PNG32、PNG8、JPG、GIF、EPS、SVG 以及 SVGZ。
默认情况下,PrintingTools 服务处于停止状态。如果要支持打印工作流,您必须使用 ArcGIS Desktop 或 ArcGIS Server Manager 启动服务。PrintingTools 服务启动后,你可以使用下列格式的 URL 对其进行访问:https://webadaptorhost.domain.com/webadaptorname/rest/services/Utilities/PrintingTools/GPServer/Export%20Web%20Map%20Task.
ArcGIS Web API 提供了若干可与 PrintingTools 服务进行通信以获取可打印地图的微件。您提供 PrintingTools 服务的 URL,微件可完成剩下的工作。有关通过您的 Portal for ArcGIS 部署使用 PrintingTools 服务的详细信息,请参阅配置门户以打印地图。
如果对地图服务进行缓存,PrintingTools 服务可能会使用过低的分辨率(如,96 DPI)而不适合大幅面或高质量打印。要以较高分辨率进行打印,建议在缓存的地图服务上启用动态图层。这样,打印服务便可以通过所需分辨率(如,300 DPI)获取地图图像(通过导出地图请求),而不是获得分辨率较低的切片。有关详细信息,请参阅关于动态图层。
从 10.4 开始,一个新任务在 PrintingTools 服务中可用:布局模版信息。该任务提供布局页面的大小和活动数据框的大小。还会显示下列布局元素是否可用:
- 图例
- 标题文本
- 版权文本
- 作者文本
- 自定义文本元素
您还可以将该任务添加到自定义打印服务中。相关说明,请参阅教程:发布用于打印的其他服务。
自定义打印服务
如果希望使用自己的地图布局,您可以发布与 PrintingTools 相似的自己的服务,用于打印 web 地图。您将此服务配置为引用您自己的已包含多种地图布局的 ArcMap 文档 (MXD) 文件夹。
有关发布您自己的用于 Web 打印的服务(并将其指向您自己的布局文件夹)的说明,可参阅教程:发布用于打印的其他服务。此教程也介绍了以后决定要更新布局时的操作。您的更新方法将根据在发布前是否使用服务器注册布局文件夹而发生变化,此教程对这两种情况都进行了说明。
请注意,教程中包含在 Portal for ArcGIS 中发布和使用自定义打印服务需要考虑的其他因素。自定义打印服务必须作为同步地理处理服务发布,而且打印服务的 URL 必须使用 HTTPS 以使其作为门户打印服务被门户接受。有关通过您的 Portal for ArcGIS 部署使用自定义打印服务的详细信息,请参阅配置门户以打印地图。
自定义打印服务可以打印使用多种数据框的布局。此服务仅替换活动数据框中的地图;但是,如果数据框之间存在关系,例如,范围矩形,则打印服务将支持这种关系。例如,假设您的布局含有两个数据框:一个主图和一个总览图。概视图包括显示主地图当前范围的范围矩形。使用此布局的自定义打印服务之前,必须确保主地图数据框为活动数据框。当 Web 用户请求此布局的地图时,主地图将显示当前 Web 地图视图,概视图的范围矩形将显示预期的主地图范围。
图例
无论使用 PrintingTools 还是自定义打印服务,您的打印输出中的图例效果相似。打印要素服务时,已打印文档中的图例只包括地图范围内的要素图例条目,然而其他服务类型的图例则包括所有的要素图例条目而不考虑地图范围。
使用 Python 的高级打印
进行高级打印时,根本不需要使用 PrintingTools;而是使用 ArcGIS 附带的 Python arcpy.mapping 模块中的 ConvertWebMapToMapDocument 功能。文档转换后,完整的 Web 地图将存在于地图文档中。随即可对地图文档进行进一步修改,然后将其最终打印或导出为常用格式(如 PDF)。
通常,ConvertWebMapToMapDocument 功能用于以本地矢量数据替换服务图层、创建地图册、控制图例外观以及使用高级选项导出不同格式。
要使 Python 脚本对 web 应用程序可用,可以通过 ArcGIS Server 地理处理服务显示脚本。有关详细信息,请参阅 Web 地图高级打印。