print

AMD: require(["esri/rest/print"], (print) => { /* code goes here */ });
ESM: import * as print from "@arcgis/core/rest/print";
Object: esri/rest/print
Since: ArcGIS API for JavaScript 4.20

The print module provides an executePrint method that generates a printer-ready version of the map using an Export Web Map Task available with ArGIS Server 10.1 and later. This class is used when you want to have more granular control over the user interface, for example, if you want to provide users the ability to define what appears on the printed page.

For more information about printing with the MAP_ONLY layout, please see exportOptions.

Use PrintParameters to set the printing options.

Known Limitations

No support

  • There is no current support for printing SceneViews. Instead, see SceneView.takeScreenshot().
  • There is no current support for printing highlighted features. Instead, see MapView.takeScreenshot().
  • There is no current support for printing ImageryLayers when a pixelFilter is defined.
  • There is no current support for printing renderers generated from univariateColorSize.createContinuousRenderer() with an above-and-below theme.
  • There is no current support for printing legend items for layers that are sent as a client-side image in the printout.
  • There is no current support for printing rotated symbols and labels when the map is rotated, and layers are sent as a client-side image in the printout.
  • There is no current support for printing features when using a renderer with above-and-below theme.
  • There is no current support for printing the drawing order of layers configured with the orderBy property.
  • There is no current support for printing GroupLayers with blending or effects. Instead, see MapView.takeScreenshot().
  • There is no current support for printing effects when a blendMode is applied to a layer.
  • There is no current support for printing layers with the following blendModes: "average", "destination-atop", "destination-in", "destination-out", "destination-over", "invert", "lighter", "minus", "plus", "reflect", "source-atop", "source-in", "source-out", "vivid-light", "XOR".

Versioned support

  • CIMSymbol cannot be printed with any Printing Service published with ArcMap.
  • Labels currently cannot be printed as part of a FeatureLayer with ArcGIS Server 10.5.1 or any Printing Service published with ArcMap.
  • ImageryLayer cannot be printed with ArcGIS Server 10.5.1 or earlier, or any Printing Service published with ArcMap.
  • VectorTileLayer printing requires ArcGIS Server 10.5.1 or later.
  • Printing layers rendered with the DotDensityRenderer will create a client-side image of the layer in the printout with ArcGIS Server 10.8.0 or earlier.
  • Printing layers using clustering will create a client-side image of the layer in the printout with GeoJSONLayer and/or ArcGIS Server 10.9.0 or earlier.
  • For printing secure VectorTileLayers with ArcGIS Server 10.5.1 or 10.6.0, or for printing VectorTileLayers with ArcGIS Server 10.5.1 or any Printing Service published with ArcMap, the print will create a client-side image for the VectorTileLayer to use in the printout. This has some limitations related to large size printing quality and a dependency on browser window height/width ratio.
  • Printing the background color of a MapView or WebMap requires ArcGIS Server 10.9.0 or later.
  • Printing layers with non-standard URLs (e.g. no MapServer, FeatureServer, or ImageServer in the URL) requires ArcGIS Server 10.9.1 or later.
  • Printing layers with supported blendModes requires ArcGIS Server 10.9.1 or later. This is the list of currently supported types: "color-burn", "color-dodge", "color", "darken", "difference", "exclusion", "hard-light", "hue", "lighten", "luminosity", "multiply", "normal", "overlay", "saturation", "screen", "soft-light".

Behavior notes

  • Printing layers using effects will create a client-side image of the layer in the printout.
  • Printing layers using binning will create a client-side image of the layer in the printout.
  • Printing layers using pie-chart renderer will create a client-side image of the layer in the printout.
  • The print server does not directly print SVG symbols. Rather, they are converted to PictureMarkerSymbols for display.
  • If the application and the print service are on the same origin, the name of the downloadable file can be customized with the fileName or title properties. If not, the name of the downloadable file will be generated by the ArcGIS Enterprise that hosts the print service.
  • Make certain that any resources to be printed are accessible by the print server. For example, if printing a map containing PictureMarkerSymbols, the URL to these symbols must be accessible to the print server for it to work properly.
See also

Method Overview

Name Return Type Summary Object
Promise<PrintResponse>

Sends a request to the print service to create a printable static image of the map using the options specified in the PrintParameters.

more details
print
String

Request the mode for the print request service.

more details
print

Method Details

execute(url, params, requestOptions){Promise<PrintResponse>}

Sends a request to the print service to create a printable static image of the map using the options specified in the PrintParameters.

Parameters
url String

The URL of the REST endpoint of the Export Web Map Task.

Defines the printing options.

requestOptions Object
optional

Additional options to be used for the data request.

Returns
Type Description
Promise<PrintResponse> Resolves to an object containing the URL of the generated printout of the view.
Example
require([
 "esri/rest/print",
 "esri/rest/support/PrintTemplate",
 "esri/rest/support/PrintParameters",
 ...
], function(print, PrintTemplate, PrintParameters, ... ) {

  // url to the print service
  const url = "https://utility.arcgisonline.com/arcgis/rest/services/Utilities/PrintingTools/GPServer/Export%20Web%20Map%20Task";

  const template = new PrintTemplate({
    format: "pdf",
    exportOptions: {
      dpi: 300
    },
    layout: "a4-portrait",
    layoutOptions: {
      titleText: "Gillette Stadium",
      authorText: "Thomas B."
    }
  });

  const params = new PrintParameters({
    view: view,
    template: template
  });

  // print when this function is called
  function executePrint() {
    print.execute(url, params).then(printResult).catch(printError);
  }

  function printResult(result) {
    console.log(result.url);
    window.open(result.url);
  }

  function printError(err) {
    console.log("Something broke: ", err);
  }
});
getMode(url){String}

Request the mode for the print request service. Can only check mode after a print request has been made at least once.

Parameter
url String

The URL of the REST endpoint of the Export Web Map Task.

Returns
Type Description
String Returns the mode for the print request execution, either "sync" or "async".

Type Definitions

PrintResponse

Represents the response of the execute() method.

Property
url String

URL pointing to the location of the generated printout of the view.

Your browser is no longer supported. Please upgrade your browser for the best experience. See our browser deprecation post for more details.