Original User: ganeshssacHi GuysI have built a printing service in my application using Print Web Map Task. My application works fine with A3 LandScape and Tabloid Landscape formats. However, when I change to to other formats such as A3 Portrait, A4 LandScape, A4 Portrait, Letter A Landscape, Letter A Portrait or Tabloid formats, it doesn't work very well. Although, first few layers on the map appears on the map, but not the other layers. For your reference, I have attached few samples of actual A3 Landscape & Tabloid Landscape print outs to compare with other formats (A4 Portrait and A4 Landscape). Can you anyone let me know why this is happening. I don't think there isn't any error with code, but I wonder it may be with actual settings or should we need to resize the legends elements of the pdf documents where this legends will fit in. I believe that legends resizes automatically in A3 Landscape and Tabloid Landscape, but not in other formats - as the legends stay bigger in size.Is there a way we could resize the legend elements for the other formats through javascript code, If so, can anyone, help me on this. And also, included my code below for your kind perusal.
// get print templates from the export web map task
var printInfo = esri.request({
"url":printUrl,
"content": { "f": "json" }
});
printInfo.then(handlePrintInfo, handleError);
function handlePrintInfo(resp) {
printTitle = dojo.byId('map_name').value;
var legendLayer = [];
legendLayers = dojo.forEach(_dynamicService, function(layer){
return {
"layerId":layer.id
}
})
var layoutTemplate, templateNames, mapOnlyIndex, templates;
/*layoutTemplate = arrayUtils.filter(resp.parameters, function(param, idx) {
return param.name === "Layout_Template";
});*/
layoutTemplate = dojo.filter(resp.parameters, function(param, idx) {
return param.name === "Layout_Template";
});
if ( layoutTemplate.length == 0 ) {
console.log("print service parameters name for templates must be \"Layout_Template\"");
return;
}
templateNames = layoutTemplate[0].choiceList;
// remove the MAP_ONLY template then add it to the end of the list of templates
mapOnlyIndex = dojo.indexOf(templateNames, "MAP_ONLY");
if ( mapOnlyIndex > -1 ) {
var mapOnly = templateNames.splice(mapOnlyIndex, mapOnlyIndex + 1)[0];
templateNames.push(mapOnly);
}
// create a print template for each choice
templates = dojo.map(templateNames, function(ch) {
var plate = new esri.tasks.PrintTemplate();
plate.layout = plate.label = ch;
plate.format = "PDF";
plate.layoutOptions = {
"authorText": "Made by: KCC GIS Development Team",
"copyrightText": " Contact GIS Team on : GISTeam@Kent.gov.uk",
"legendLayers":legendLayers,
"titleText": printTitle,
"scalebarUnit": "Miles"
};
return plate;
});
// create the print dijit
var printer = new esri.dijit.Print({
"map": _map,
"templates": templates,
url: printUrl
}, dojo.byId("print_temp"));
printer.startup();
dojo.connect(printer, "onPrintStart", function () {
this.templates[0].layoutOptions.titleText = dojo.byId("map_name").value;
this.templates[1].layoutOptions.titleText = dojo.byId("map_name").value;
this.templates[2].layoutOptions.titleText = dojo.byId("map_name").value;
this.templates[3].layoutOptions.titleText = dojo.byId("map_name").value;
this.templates[4].layoutOptions.titleText = dojo.byId("map_name").value;
this.templates[5].layoutOptions.titleText = dojo.byId("map_name").value;
});
}
function handleError(err) {
console.log("Something broke: ", err);
}