<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Re: setRequestPreCallback on PrintTask in ArcGIS JavaScript Maps SDK Questions</title>
    <link>https://community.esri.com/t5/arcgis-javascript-maps-sdk-questions/setrequestprecallback-on-printtask/m-p/153743#M14343</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;It &amp;nbsp;looks &lt;STRONG&gt;setRequestPreCallback &amp;nbsp;&lt;/STRONG&gt; is not available &amp;nbsp; in &amp;nbsp;the API version 4.x &amp;nbsp;(&lt;A class="link-titled" href="https://developers.arcgis.com/javascript/latest/api-reference/esri-request.html#esriRequest" title="https://developers.arcgis.com/javascript/latest/api-reference/esri-request.html#esriRequest"&gt;request | API Reference | ArcGIS API for JavaScript 4.3&lt;/A&gt;&amp;nbsp;)&lt;/P&gt;&lt;P&gt;I am trying to convert my &amp;nbsp;old print task &amp;nbsp;using &amp;nbsp;new 4.x API. &amp;nbsp; Is there any alternate way to retrieve and modify &lt;STRONG&gt;&lt;EM style="background-color: #ffffff; color: #000000;"&gt;args.content.Web_Map_as_JSON&amp;nbsp;&lt;/EM&gt;&lt;/STRONG&gt;&amp;nbsp;&amp;nbsp;before it call print task?&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Wed, 08 Mar 2017 15:47:13 GMT</pubDate>
    <dc:creator>SurendranNeelakantan</dc:creator>
    <dc:date>2017-03-08T15:47:13Z</dc:date>
    <item>
      <title>setRequestPreCallback on PrintTask</title>
      <link>https://community.esri.com/t5/arcgis-javascript-maps-sdk-questions/setrequestprecallback-on-printtask/m-p/153739#M14339</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;I'm having a brain block this morning and having problems using setRequestPreCallback with PrintTask.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Thanks.&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 05 Feb 2014 16:34:12 GMT</pubDate>
      <guid>https://community.esri.com/t5/arcgis-javascript-maps-sdk-questions/setrequestprecallback-on-printtask/m-p/153739#M14339</guid>
      <dc:creator>BenFousek</dc:creator>
      <dc:date>2014-02-05T16:34:12Z</dc:date>
    </item>
    <item>
      <title>Re: setRequestPreCallback on PrintTask</title>
      <link>https://community.esri.com/t5/arcgis-javascript-maps-sdk-questions/setrequestprecallback-on-printtask/m-p/153740#M14340</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;Got it. And figured out how to reset setRequestPreCallback so it doesn't fire on other requests.&lt;/SPAN&gt;&lt;BR /&gt;&lt;PRE class="plain" name="code"&gt;esriRequest.setRequestPreCallback(function (args) { &amp;nbsp;&amp;nbsp;&amp;nbsp; //do stuff &amp;nbsp;&amp;nbsp;&amp;nbsp; return args; }); this.printTask.execute(this.printParameters, lang.hitch(this, this._print), lang.hitch(this, this._error)); //reset esriRequest.setRequestPreCallback();&lt;/PRE&gt;&lt;DIV style="display:none;"&gt; &lt;/DIV&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 05 Feb 2014 17:10:57 GMT</pubDate>
      <guid>https://community.esri.com/t5/arcgis-javascript-maps-sdk-questions/setrequestprecallback-on-printtask/m-p/153740#M14340</guid>
      <dc:creator>BenFousek</dc:creator>
      <dc:date>2014-02-05T17:10:57Z</dc:date>
    </item>
    <item>
      <title>Re: setRequestPreCallback on PrintTask</title>
      <link>https://community.esri.com/t5/arcgis-javascript-maps-sdk-questions/setrequestprecallback-on-printtask/m-p/153741#M14341</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;Here's some follow up for interested parties.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Until yesterday I'd never really used PrintTask or associated classes, instead creating my own Web_Map_as_JSON and making a independent request for a couple reasons:&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;1) I didn't want to print all layers, e.g. a results layer or custom gp layer.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;2) Sending attribute and info template json can exponentially increase the size of the request and with no benefit. And cause errors, especially with text symbols.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;This approach has worked well, but has required a lot more coding and code maintenance as dojo/jsapi have evolved. Wanting to reduce code and let the native esri classes do the heavy lifting, this is my 26 lines of code to get the same result. With the following understanding: 1) layers that are not to be printed are extended with layer._print = false;, 2) this example is out of a custom class (hence the hitching), and 3) this.map is in fact the map.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;PRE class="lia-code-sample line-numbers language-none"&gt;esriRequest.setRequestPreCallback(lang.hitch(this, function (args) {
&amp;nbsp;&amp;nbsp;&amp;nbsp; //Web_Map_as_JSON to js obj
&amp;nbsp;&amp;nbsp;&amp;nbsp; var json = JSON.parse(args.content.Web_Map_as_JSON);
&amp;nbsp;&amp;nbsp;&amp;nbsp; //remove map.graphics
&amp;nbsp;&amp;nbsp;&amp;nbsp; json.operationalLayers.splice(arrayUtils.indexOf(json.operationalLayers, this.map.graphics.id), 1);
&amp;nbsp;&amp;nbsp;&amp;nbsp; //remove non-print layers
&amp;nbsp;&amp;nbsp;&amp;nbsp; arrayUtils.forEach(json.operationalLayers, function (ol) {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var layer = this.map.getLayer(ol.id);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (layer._print &amp;amp;&amp;amp; layer._print === false) {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; json.operationalLayers.splice(arrayUtils.indexOf(json.operationalLayers, ol), 1);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }
&amp;nbsp;&amp;nbsp;&amp;nbsp; }, this);
&amp;nbsp;&amp;nbsp;&amp;nbsp; //strip graphic layer attributes and and info templates
&amp;nbsp;&amp;nbsp;&amp;nbsp; arrayUtils.forEach(json.operationalLayers, function (ol) {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (ol.featureCollection &amp;amp;&amp;amp; ol.featureCollection.layers.length) {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; arrayUtils.forEach(ol.featureCollection.layers, function (layer) {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; arrayUtils.forEach(layer.featureSet.features, function (feature) {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (feature.attributes) {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; delete feature.attributes;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (feature.infoTemplate) {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; delete feature.infoTemplate;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; });
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; });
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }
&amp;nbsp;&amp;nbsp;&amp;nbsp; });
&amp;nbsp;&amp;nbsp;&amp;nbsp; //json to Web_Map_as_JSON
&amp;nbsp;&amp;nbsp;&amp;nbsp; args.content.Web_Map_as_JSON = JSON.stringify(json);
&amp;nbsp;&amp;nbsp;&amp;nbsp; return args;
}));&lt;/PRE&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;A final consideration. If you are using a custom print task server side and need attributes to do something cool, like create a table of attributes for a selected feature or label graphics, then steps would need to be taken not to strip those attributes from those layers.&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sat, 11 Dec 2021 08:13:17 GMT</pubDate>
      <guid>https://community.esri.com/t5/arcgis-javascript-maps-sdk-questions/setrequestprecallback-on-printtask/m-p/153741#M14341</guid>
      <dc:creator>BenFousek</dc:creator>
      <dc:date>2021-12-11T08:13:17Z</dc:date>
    </item>
    <item>
      <title>Re: setRequestPreCallback on PrintTask</title>
      <link>https://community.esri.com/t5/arcgis-javascript-maps-sdk-questions/setrequestprecallback-on-printtask/m-p/153742#M14342</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;This is excellent!&amp;nbsp; Exactly what I was looking for.&amp;nbsp; &lt;/P&gt;&lt;P&gt;One small change on line 9.&amp;nbsp; If the _print property is false then the if statement will still evaluate to false.&amp;nbsp; I think it should read:&lt;/P&gt;&lt;P&gt;if (layer.hasOwnProperty('_print') &amp;amp;&amp;amp; layer._print === false) { &lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sat, 19 Dec 2015 00:14:39 GMT</pubDate>
      <guid>https://community.esri.com/t5/arcgis-javascript-maps-sdk-questions/setrequestprecallback-on-printtask/m-p/153742#M14342</guid>
      <dc:creator>SebastianRoberts</dc:creator>
      <dc:date>2015-12-19T00:14:39Z</dc:date>
    </item>
    <item>
      <title>Re: setRequestPreCallback on PrintTask</title>
      <link>https://community.esri.com/t5/arcgis-javascript-maps-sdk-questions/setrequestprecallback-on-printtask/m-p/153743#M14343</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;It &amp;nbsp;looks &lt;STRONG&gt;setRequestPreCallback &amp;nbsp;&lt;/STRONG&gt; is not available &amp;nbsp; in &amp;nbsp;the API version 4.x &amp;nbsp;(&lt;A class="link-titled" href="https://developers.arcgis.com/javascript/latest/api-reference/esri-request.html#esriRequest" title="https://developers.arcgis.com/javascript/latest/api-reference/esri-request.html#esriRequest"&gt;request | API Reference | ArcGIS API for JavaScript 4.3&lt;/A&gt;&amp;nbsp;)&lt;/P&gt;&lt;P&gt;I am trying to convert my &amp;nbsp;old print task &amp;nbsp;using &amp;nbsp;new 4.x API. &amp;nbsp; Is there any alternate way to retrieve and modify &lt;STRONG&gt;&lt;EM style="background-color: #ffffff; color: #000000;"&gt;args.content.Web_Map_as_JSON&amp;nbsp;&lt;/EM&gt;&lt;/STRONG&gt;&amp;nbsp;&amp;nbsp;before it call print task?&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 08 Mar 2017 15:47:13 GMT</pubDate>
      <guid>https://community.esri.com/t5/arcgis-javascript-maps-sdk-questions/setrequestprecallback-on-printtask/m-p/153743#M14343</guid>
      <dc:creator>SurendranNeelakantan</dc:creator>
      <dc:date>2017-03-08T15:47:13Z</dc:date>
    </item>
    <item>
      <title>Re: setRequestPreCallback on PrintTask</title>
      <link>https://community.esri.com/t5/arcgis-javascript-maps-sdk-questions/setrequestprecallback-on-printtask/m-p/153744#M14344</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;It is implemented in the API just not documented yet. &amp;nbsp;You can refer back to the 3.x documentation for usage&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 15 May 2017 21:00:31 GMT</pubDate>
      <guid>https://community.esri.com/t5/arcgis-javascript-maps-sdk-questions/setrequestprecallback-on-printtask/m-p/153744#M14344</guid>
      <dc:creator>TravisButcher</dc:creator>
      <dc:date>2017-05-15T21:00:31Z</dc:date>
    </item>
  </channel>
</rss>

