可通过以下几种方式从 web 应用程序生成可打印的文档。ArcGIS Enterprise 包含名为 PrintingTools 的地理处理服务。Web 应用程序可以调用 PrintingTools 服务以获取可打印的文档。还可以使用您自己的而非默认 PrintingTools 服务中的布局创建自定义打印服务。对于高级打印,可以使用 Python 脚本将 Web 地图转换成 ArcMap 文档 (.mxd) 或者 ArcGIS Pro 工程 (.aprx),然后将工程内的地图或布局导出为各种格式以进行打印。
可以为 ArcGIS Enterprise 门户、web 应用程序模板、ArcGIS Web AppBuilder 和使用 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 服务处于停止状态。如果要支持打印工作流,则必须使用 ArcMap 或 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,微件可完成剩下的工作。有关通过您的 ArcGIS Enterprise 门户使用 PrintingTools 服务的详细信息,请参阅配置门户以打印地图。
注:
如果对地图服务进行缓存,PrintingTools 服务可能会使用过低的分辨率(如,96 DPI)而不适合大幅面或高质量打印。要以较高分辨率进行打印,建议在缓存的地图服务上启用动态图层。这样,打印服务便可以通过所需分辨率(如,300 DPI)获取地图图像(通过导出地图请求),而不是获得分辨率较低的切片。有关详细信息,请参阅关于动态图层。获取布局模板信息任务可提供布局页面的大小和地图框的大小。还会显示下列布局元素是否可用:
- 图例
- 标题文本
- 版权文本
- 作者文本
- 自定义文本元素
您还可以将该任务添加到自定义打印服务中。相关说明,请参阅教程:发布用于打印的其他服务。
注:
不建议将您自己的布局模板与 PrintingTools 服务配合使用。相反,您应该发布自定义打印服务。
图例
无论使用 PrintingTools 还是自定义打印服务,您的打印输出中的图例效果相似。打印要素服务时,已打印文档中的图例只包括地图范围内的要素图例条目,然而其他服务类型的图例则包括所有的要素图例条目而不考虑地图范围。
自 10.7.1 起,打印服务将自动调整图例,以仅显示当前范围内可见要素的图面。此功能适用于从 ArcGIS Pro 发布至 ArcGIS Enterprise 10.7.1 的地图服务,而且无需任何其他配置。
Unicode 字符
PrintingTools 服务中的默认布局模板不使用支持 Unicode 字符的字体。因此您的标题或图例项可能会遇到问题,尤其是具有国际字符的标题和图例项。要解决此问题,请考虑使用您自己的布局模板发布自定义打印服务,然后设置支持 Unicode 字符的字体。
- 在 ArcGIS Pro 中使用图例元素时,可以为默认图例项设置支持 Unicode 字符的字体。
- ArcMap 不支持更改默认图例项的字体。因此,要更改图例元素中所有项目的样式,需要编写基于 arcpy 的打印服务。
自定义打印服务
如果希望使用自己的地图布局,您可以发布与 PrintingTools 相似的自己的服务,用于打印 web 地图。可以在 ArcMap 10.1 和更高版本,或者在 ArcGIS Pro 2.1 和更高版本中完成此操作。您可以将此服务配置为引用您自己的文件夹,该文件夹是通过各种地图布局(ArcMap 中的地图文档 (.mxd) 或 ArcGIS Pro 中的布局文件 (.pagx))准备的。
您可以在两个主题中找到有关发布自定义打印工具的说明:使用 ArcMap 的自定义布局发布其他打印服务和与 ArcGIS Pro 的自定义布局共享打印服务 Web 工具。在 ArcGIS Pro 工作流中,将 Web 工具共享到 ArcGIS Enterprise 门户,该门户由发布到联合 ArcGIS Server 站点的地理处理服务提供支持。
这些工作流也介绍了以后决定要更新布局时的操作。您的更新方法将根据在发布前是否使用服务器注册布局文件夹而发生变化,此工作流对这两种情况都进行了说明。
请注意,这些主题中包含在您的 ArcGIS Enterprise 门户中发布和使用自定义打印工具需要考虑的其他因素。自定义打印服务必须作为同步地理处理服务发布,而且打印服务的 URL 必须使用 HTTPS 以使其作为门户打印服务被门户接受。有关在您的 ArcGIS Enterprise 门户中使用自定义打印服务或 web 工具的详细信息,请参阅配置门户以打印地图。
自定义打印服务可以打印使用多种地图框或数据框的布局。
- 从 ArcMap 发布的打印服务会更新活动数据框中的内容。
- 作为 ArcGIS Pro web 工具发布的打印服务会更新地图,该地图与您已命名为 "WEBMAP_MAP_FRAME"(区分大小写)的地图框相关联。
注:
建议从与 "WEBMAP_MAP_FRAME" 相关联的地图中移除所有图层。但是,在一些高级案例中,您可能需要将图层包含在地图中,并且打印服务不会将其移除。
使用 Python 的高级打印
对于高级打印场景,您根本不会使用 PrintingTools。您可以使用 Python ConvertWebMapToMapDocument 模块中的 ConvertWebMapToArcGISProject(适用于 ArcMap)或 arcpy(适用于 ArcGIS Pro)函数。文档转换后,完整的 Web 地图将存在于地图文档 (.mxd) 或 ArcGIS Pro 工程 (.aprx) 中。随即分别对地图文档或者 ArcGIS Pro 工程中的地图或布局进行进一步修改,然后将其最终打印或导出为常用格式(如 PDF)。
通常,这些转换功能用于以本地矢量数据替换服务图层、创建地图册、控制图例外观以及使用高级选项导出不同格式。
要使 Python 脚本对 web 应用程序可用,可以通过 ArcGIS Server 地理处理服务显示脚本。有关详细信息,请参阅 Web 地图高级打印。