ARCGIS API for JS调用ARCGIS Server自定义布局打印服务

1、打印服务

1.1 什么是PrintingTools 服务

PrintingTools 是 Utilities 文件夹中预先配置的一项服务,可使用其中一个预定义的地图布局来创建可打印的文档。 这些布局包括纵向和横向的使用 8.5 * 11 英寸、11 * 17 英寸、A3 和 A4 纸张大小的基本设计。 每个布局都包含指北针、比例尺和比例、图例、日期以及标题。 PrintingTools 服务所支持的输出格式包括 PDF、PNG32、PNG8、JPG、GIF、EPS、SVG、SVGZ、TIFF 以及 AIX。

默认情况下,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,微件可完成剩下的工作。

注:
如果对地图服务进行缓存,PrintingTools 服务可能会使用过低的分辨率(如,96 DPI)而不适合大幅面或高质量打印。 要以较高分辨率进行打印,建议在缓存的地图服务上启用动态图层。 这样,打印服务便可以通过所需分辨率(如,300 DPI)获取地图图像(通过导出地图请求),而不是获得分辨率较低的切片。

1.2 自定义打印服务

1.2.1 什么是自定义打印服务

除 ArcGIS Enterprise 附带的 PrintingTools 服务外,有时可能还需要发布用于 web 打印的其他服务。例如,可创建一项服务,然后配置该服务,使其指向您自己的地图布局文件夹。

您不应更新默认 PrintingTools 服务随附的布局,也不应添加新布局和重新发布此服务。

要配置您自己的打印服务,需要通过导出 Web 地图工具发布地理处理服务。

如果希望使用自己的地图布局,您可以发布与 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 站点的地理处理服务提供支持。

这些工作流也介绍了以后决定要更新布局时的操作。 您的更新方法将根据在发布前是否使用服务器注册布局文件夹而发生变化,此工作流对这两种情况都进行了说明。

注:自定义打印服务必须作为同步地理处理服务发布,而且打印服务的 URL 必须使用 HTTPS 以使其作为门户打印服务被门户接受。

1.2.2 更新布局模板

如果要更新布局模板文件夹中的布局,需要根据发布前是否将布局模板文件夹注册到服务器来确定相应的工作流(请参阅上述“将布局模板注册到 ArcGIS Server”部分)。要将新布局添加到文件夹还是更新现有布局也很重要。这是因为您创建的地理处理任务会保留执行时布局模板文件夹中的布局列表。

如果发布前将布局模板文件夹注册到服务器,则意味着服务器可以访问布局。如果您更新文件夹中的现有布局文件 (.pagx),则您修改的布局将立即可用。但是,服务器将不会看到您在发布服务后添加的任何新布局。

因此,如果存在以下任一情况,您将需要执行服务覆盖,以使您的更改可供 ArcGIS Server 用户使用:

发布自定义打印服务前未将布局模板文件夹注册到服务器,这意味着在发布时将布局复制到服务器。
发布自定义打印服务后,您想要将新的布局模板添加到该文件夹,并使其可供用户使用。

获取布局模板信息脚本工具允许将获取布局模板信息任务添加至打印服务。该任务提供布局页面的大小和地图框的大小。还会显示下列布局元素是否可用:

  • 图例
  • 标题文本
  • 版权文本
  • 作者文本
  • 自定义文本元素

图例
无论使用 PrintingTools 还是自定义打印服务,您的打印输出中的图例效果相似。 打印要素服务时,已打印文档中的图例只包括地图范围内的要素图例条目,然而其他服务类型的图例则包括所有的要素图例条目而不考虑地图范围。

自 10.7.1 起,打印服务将自动调整图例,以仅显示当前范围内可见要素的图面。 此功能适用于从 ArcGIS Pro 发布至 ArcGIS Enterprise 10.7.1 的地图服务,而且无需任何其他配置。

了解有关在 ArcGIS Pro 中使用图例项的详细信息

Unicode 字符
PrintingTools 服务中的默认布局模板不使用支持 Unicode 字符的字体。 因此您的标题或图例项可能会遇到问题,尤其是具有国际字符的标题和图例项。 要解决此问题,请考虑使用您自己的布局模板发布自定义打印服务,然后设置支持 Unicode 字符的字体。

在 ArcGIS Pro 中使用图例元素时,可以为默认图例项设置支持 Unicode 字符的字体。
ArcMap 不支持更改默认图例项的字体。 因此,要更改图例元素中所有项目的样式,需要编写基于 arcpy 的打印服务。

1.2.3 覆盖并重新发布您的自定义打印服务

请按照以下步骤覆盖服务并使您的更新可用:
在这里插入图片描述

您选择的选项覆盖了第一次发布过程中设置的所有选项。布局模板文件夹(包括更新)复制到服务器中,并替换了最初发布服务时放置在此处的布局模板文件夹。

2、如何发布自定义打印服务

2.1 将您的布局模板文件夹注册到 ArcGIS Server

我们可以找到arcgisserver自带的布局模板,如下图:
在这里插入图片描述

在这里插入图片描述

那么,在我们发布自己的打印服务的时候,这个mxd里面就包含了,我们打印的布局设置,我们将准备就绪的 ArcMap 文档 (.mxd) 注册到server上,这些文档含有用于 Web 地图打印的不同布局,这个所在的文件夹就是布局模板文件夹。

如果布局模板文件夹当前位于服务器上,或者可以通过服务器进行访问,则应使用ArcGIS Desktop 将该文件夹注册到 ArcGIS Server。

如果无法将布局模板文件夹放到服务器上,或放到通过服务器可以访问的位置,则无需执行任何操作。发布服务时,将布局模板文件夹复制到服务器,从而确保服务器可以访问该文件夹。虽然这个选项很容易配置,但在以后更新布局模板时要执行更多步骤。
在这里插入图片描述

2.2 准备和发布服务

要发布服务,先运行导出 Web 地图工具,该工具包含您的服务所需的默认值。下一步,运行获取布局模板信息脚本工具。然后将结果发布为地理处理服务。

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

3、使用打印服务

3.1 如何使用打印服务

通过以下几种方式从 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 应用程序模版创建的所有应用程序)配备打印功能的详细信息,请参阅门户管理员指南中的配置门户以打印地图。

3.2 portal中使用

要通过 ArcGIS Enterprise 门户使用自定义打印服务,复制此 URL(包括导出 Web 地图任务),然后将其粘贴在实用程序服务对话框中以进行打印。请注意,门户仅接受使用 HTTPS 的 URL 用于其打印实用程序服务。
在这里插入图片描述
我们可以在portal的组织实用程序中,将arcgis自带的打印服务,更换成我们自己的打印服务,下图是程序自带的打印服务;
在这里插入图片描述

3.3 arcgis api for javascripts

此时 ,在由 ArcGIS Web API 提供的打印微件中,可以引用新服务。可在您的 ArcGIS 服务目录中找到打印服务的 URL。

本代码使用在线的mapserver,然后print服务使用的是,封装的widgets插件:

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8" />
    <meta name="viewport" content="initial-scale=1, maximum-scale=1,user-scalable=no" />
    <title>Print widget | Sample | ArcGIS API for JavaScript 4.19</title>
    <link rel="stylesheet" href="https://js.arcgis.com/4.19/esri/themes/light/main.css" />

    <style>
      html,
      body,
      #viewDiv {
    
    
        padding: 0;
        margin: 0;
        height: 100%;
        width: 100%;
        overflow: hidden;
      }
    </style>

    <script src="https://js.arcgis.com/4.19/"></script>
    <script>
      require(["esri/Map",
	  "esri/views/MapView",
	  "esri/widgets/Legend", 
	  "esri/widgets/Print", 
	  "esri/layers/MapImageLayer",
	  "esri/WebMap"], 
	  function(Map,MapView,Legend, Print,MapImageLayer, WebMap) 
	  {
    
    
		var map = new Map();
        var view = new MapView({
    
    
          container: "viewDiv",
          map: map
        });
		// Set the renderer on the layer
        var flayer = new MapImageLayer({
    
    
                url: "https://sampleserver6.arcgisonline.com/arcgis/rest/services/Census/MapServer"
            });
		map.add(flayer);
		var legend = new Legend({
    
    
                view: view,
                layerInfos: [
                    {
    
    
                        layer: flayer
                    }
                ]
            });
        view.when(function() {
    
    
          var print = new Print({
    
    
            view: view,
            // specify your own print service
            printServiceUrl:
              "https://t460p.esrichina.com/server/rest/services/Utilities/PrintingTools/GPServer/Export%20Web%20Map%20Task"
          });

          // Add widget to the top right corner of the view
          view.ui.add(print, "top-right");
        });
      });
    </script>
  </head>

  <body class="calcite">
    <div id="viewDiv"></div>
  </body>
</html>

4 准备将 ArcMap 打印服务用于 ArcGIS Enterprise 时的注意事项

(1)在 ArcMap 中创建用于 ArcGIS Enterprise 门户的布局时,以下最佳做法可供使用:

  • 插入一个标题并将标题文本留空,以便在打印时在此标题文本框中填充您门户 web 地图的名称。未保存的 Web 地图会以 My Map 为标题打印。
  • 插入创建者动态文本以打印用户的名称。
  • 插入当前日期动态文本以显示地图的打印日期。
  • 插入当前时间动态文本以显示地图的打印时间。

警告:
请勿在布局中插入用户名动态文本。该动态文本会填充有关打印服务的敏感信息。

(2)打印服务报错常见文件汇总:
1、先尝试进行进行http方式进行打印服务访问,比如打印http的mapserver;
http://t460p.esrichina.com/server/rest/services/Folder/testpoint/MapServer
如果可以正常打印,那么在进行尝试https的打印服务;

(3)自签名证书导致的错误
对于Enterprise自签名证书导致的错误,多存在于如下场景:
1)未对Enterprise设置本地的打印服务
2)待打印的webmap的json构造串中包含的服务的url是https方式的
3)这里的证书为自签名证书
4)这一证书和PrintingTools所在的ArcGIS for Server节点本身的证书不一致。
关于证书统一,可以参考网上:
通过OpenSSL生成证书并让Chrome浏览器识别为安全终极办法
https://blog.csdn.net/weixin_44616652/article/details/104834774

注:在新建完文件夹,如果进行server注册的时候,报错没有权限,那么我们也需要对文件夹进行arcgis用户权限的赋予;
在这里插入图片描述
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_40625478/article/details/110793463
今日推荐