import "@arcgis/map-components/components/arcgis-print";The Print component connects your application with a printing service to allow the map to be printed. It takes advantage of server-side, high-quality, full cartographic print functionality using the ExportWebMap service of ArcGIS, which can be configured with custom layout templates. One is provided that shows the map only, while another provides a layout with legend, etc. The Print component works with the print module, which generates a printer-ready version of the map.
The Print component uses the ArcGIS Online print service by default, but it can be configured to use a custom print service with the printServiceUrl property. The component can preserve map scale or map extent in the printout. By default, the map extent is preserved. Use TemplateOptions.scaleEnabled to preserve scale instead.
The Print component prints a localized date for all layouts
except map-only. If using a custom print service, then customTextElements are supported for each print
template. Values found there will be populated in the Print component under Advanced options. These values can
be overwritten in the Print component UI, or programmatically using the
templateCustomTextElements property.
For more information about printing with the MAP_ONLY layout, please see
exportOptions.
Known limitations
See print for a detailed list of known limitations.
<arcgis-map item-id="45725ba7d9fb47a0925398919b13d1fa">
<arcgis-print slot="top-right"></arcgis-print>
</arcgis-map>// get a reference to the component
const components = document.querySelectorAll("arcgis-print");
const portal = new Portal({
url: "https://user.maps.arcgis.com/sharing",
authMode: "immediate",
authorizedCrossOriginDomains: ["https://user.maps.arcgis.com"],
});
components.forEach((component) => {
component.portal = portal;
});Demo
Properties
| Property | Attribute | Type |
|---|---|---|
allowedFormats | allowed-formats | Array<string> | string |
allowedFormatsForSaving | allowed-formats-for-saving | "all" | Array<string> |
allowedLayouts | allowed-layouts | Array<string> | string |
autoDestroyDisabled | auto-destroy-disabled | boolean |
browseTemplateButtonOnClick | | ((() => void)) |
excludeDefaultTemplates | exclude-default-templates | boolean |
excludeOrganizationTemplates | exclude-organization-templates | boolean |
exportedLinks | | Collection<FileLink> |
extraParameters | extra-parameters | any |
headingLevel | heading-level | 1 | 2 | 3 | 4 | 5 | 6 |
hideHeader | hide-header | boolean |
icon | icon | string |
label | label | string |
messageOverrides | | Record<string, unknown> |
outSpatialReference | | SpatialReference |
portal | | Portal |
positiondeprecatedreflected | position | "bottom-leading" | "bottom-left" | "bottom-right" | "bottom-trailing" | "manual" | "top-leading" | "top-left" | "top-right" | "top-trailing" |
printServiceUrl | print-service-url | string |
referenceElement | reference-element | HTMLArcgisLinkChartElement | HTMLArcgisMapElement | HTMLArcgisSceneElement | string |
saveAsButtonCallback | | (((exportedLink: FileLink) => Promise<PortalItem>)) |
showPrintAreaEnabled | show-print-area-enabled | boolean |
statereadonlyreflected | state | "disabled" | "error" | "initializing" | "ready" |
templateCustomTextElements | | {
[x: string]: Array<HashMap<string>> | undefined;
} |
templateOptions | | TemplateOptions |
view | | MapView |
allowedFormats
allowedFormats: Array<string> | stringSpecify the print output file format(s) that the user can select based on the options available from the print service. This property can take a string value or an array of string values.
When this value is "all" (default value), all the print service formats are available to be used.
When an array of string values is used, only those values that match the options available from the print service will be used.
If none of the input string values match those available from the print service, allowedFormats will fallback to default behavior.
- Attribute
- allowed-formats
- Default value
- "all"
allowedFormatsForSaving
allowedFormatsForSaving: "all" | Array<string>Specifies the print output file format(s) that the user can select when saving the exported map printout. This property can take a string value or an array of string values.
- Attribute
- allowed-formats-for-saving
allowedLayouts
allowedLayouts: Array<string> | stringSpecify the print output layout(s) that the user can select based on the options available from the print service. This property can take a string value or an array of string values.
When this value is "all" (default value), all the print service layouts are available to be used.
When an array of string values is used, only those values that match the options available from the print service will be used.
If none of the input string values match those available from the print service, allowedLayouts will fallback to default behavior.
- Attribute
- allowed-layouts
- Default value
- "all"
autoDestroyDisabled
autoDestroyDisabled: booleanIf true, the component will not be destroyed automatically when it is disconnected from the document. This is useful when you want to move the component to a different place on the page, or temporarily hide it. If this is set, make sure to call the destroy method when you are done to prevent memory leaks.
- Attribute
- auto-destroy-disabled
- Default value
- false
excludeDefaultTemplates
excludeDefaultTemplates: booleanIndicates whether or not to include defaultTemplates.
- Attribute
- exclude-default-templates
- Default value
- false
excludeOrganizationTemplates
excludeOrganizationTemplates: booleanIndicates whether or not to include templates from an organization's portal.
- Attribute
- exclude-organization-templates
- Default value
- false
exportedLinks
exportedLinks: Collection<FileLink>The collection of links exported from the Print component.
extraParameters
extraParameters: anyThis option allows passing extra parameters (in addition to templateOptions) to the print (export webmap) requests.
- Attribute
- extra-parameters
headingLevel
headingLevel: 1 | 2 | 3 | 4 | 5 | 6Indicates the heading level to use for the "Exported files" text where users can
access the exported map printout. By default, this text is rendered
as a level 3 heading (e.g. <h3>Exported files</h3>). Depending on the component's placement
in your app, you may need to adjust this heading for proper semantics. This is
important for meeting accessibility standards.
- Attribute
- heading-level
- Default value
- 3
hideHeader
hideHeader: booleanIndicates whether the component's header is hidden.
- Attribute
- hide-header
- Default value
- false
icon
icon: stringIcon which represents the component. Typically used when the component is controlled by another component (e.g. by the Expand component).
- See also
- Attribute
- icon
- Default value
- "print"
messageOverrides
messageOverrides: Record<string, unknown>Replace localized message strings with your own strings.
Note: Individual message keys may change between releases.
outSpatialReference
outSpatialReference: SpatialReferenceThe spatial reference used to render the printed map on the server.
portal
portal: PortalIt is possible to search a specified portal instance's locator services. Use this property to set this ArcGIS Portal instance to search. This is especially helpful when working with a custom template.
If this property is set, it is not necessary to set the printServiceUrl property.
position
position: "bottom-leading" | "bottom-left" | "bottom-right" | "bottom-trailing" | "manual" | "top-leading" | "top-left" | "top-right" | "top-trailing"slot instead.- Attribute
- position
printServiceUrl
printServiceUrl: stringThe URL of the REST endpoint of the Export Web Map Task. Defaults to the ArcGIS Online print service if this property is not specified. If the portal property is set, this property will use the portal's print service URL.
- Attribute
- print-service-url
referenceElement
referenceElement: HTMLArcgisLinkChartElement | HTMLArcgisMapElement | HTMLArcgisSceneElement | stringBy passing the id of the Map or Scene component into this property, you can position components from the @arcgis/map-components
package anywhere in the DOM while still maintaining a connection to the Map or Scene.
See Associate components with a Map or Scene component.
- Attribute
- reference-element
showPrintAreaEnabled
showPrintAreaEnabled: booleanThe initial state of the print area toggle in the Print component UI.
When set to true, the print area toggle is enabled by default.
When set to false, the print area toggle is disabled by default.
- Attribute
- show-print-area-enabled
- Default value
- false
state
state: "disabled" | "error" | "initializing" | "ready"The state of the Print component.
- Attribute
- state
- Default value
- "disabled"
templateCustomTextElements
templateCustomTextElements: {
[x: string]: Array<HashMap<string>> | undefined;
}An object containing an array of customTextElements name-value pair objects
for each print template in a custom print service. Use this property to update
the text for custom text elements on the page layout.
The Print component calls the Get Layout Templates Info task on the GPServer
to discover possible customTextElements values for each template. The name of
the task must match Get Layout Templates Info, templates must be published
with customTextElements, and values must be strings. Values found there will be
populated in the Print component under Advanced options. These values can be
overwritten in the Print component UI, or programmatically using this property.
To list all print templates available on the print service to see
see which templates were published with customTextElements, use the
effectiveTemplateCustomTextElements
property.
templateOptions
templateOptions: TemplateOptionsDefines the layout template options used by the Print component to generate the print page.
view
view: MapViewThe view associated with the component.
Note: The recommended approach is to fully migrate applications to use map and scene components and avoid using MapView and SceneView directly. However, if you are migrating a large application from widgets to components, you might prefer a more gradual transition. To support this use case, the SDK includes this
viewproperty which connects a component to a MapView or SceneView. Ultimately, once migration is complete, the Print component will be associated with a map or scene component rather than using theviewproperty.
Methods
| Method | Signature |
|---|---|
componentOnReady | componentOnReady(): Promise<void> |
destroy | destroy(): Promise<void> |
componentOnReady
componentOnReady(): Promise<void>Create a promise that resolves once component is fully loaded.
Example
const arcgisPrint = document.querySelector("arcgis-print");
document.body.append(arcgisPrint);
await arcgisPrint.componentOnReady();
console.log("arcgis-print is ready to go!");- Returns
- Promise<void>
Events
| Event | Type |
|---|---|
arcgisComplete | CustomEvent<PrintCompleteEvent> |
arcgisPropertyChange | CustomEvent<{ name: "state"; }> |
arcgisReady | CustomEvent<void> |
arcgisSubmit | CustomEvent<PrintSubmitEvent> |
arcgisComplete
arcgisComplete: CustomEvent<PrintCompleteEvent>Emitted when the component is complete.
arcgisPropertyChange
arcgisPropertyChange: CustomEvent<{ name: "state"; }>Emitted when the value of a property is changed. Use this to listen to changes to properties.
arcgisReady
arcgisReady: CustomEvent<void>Emitted when the component associated with a map or scene view is ready to be interacted with.
arcgisSubmit
arcgisSubmit: CustomEvent<PrintSubmitEvent>Emitted when the component is submitted.