Select to view content in your preferred language

i want to export map with Legend in PDF and JPG format both.

1054
1
11-11-2011 01:59 AM
VikramTripathi
Deactivated User
Dear All ,
i am using arcGIS server 10.0 with java plate form and Flex API 2.3 . , i have only dynamicMapService in my server.
01. i want to export Map in PDF and JPEG (or any image format) format , for converting into pdf m using fxPDF API.   i am attacing code which i using to perform task.
problem is that m not getting image as m seeing in map control. my map goes to in small size.

02. and i want to also export map with Legend..

Do u have any idea with following code (or any other idea)...Plz help me....

/**************************************/
  First Method...
/**************************************/

public function exportMap():void{
//http://forums.esri.com/Thread.asp?c=158&f=2421&t=277380
try{
  var pdfDoc:HPDF_Doc;
  var map:Map= FlexGlobals.topLevelApplication.appViewer;
  const pngDecoder:PNGEncoder=new PNGEncoder();
  const fileReference:FileReference = new FileReference();
 
  var layer:ArcGISDynamicMapServiceLayer= FlexGlobals.topLevelApplication.appViewer.dynServLyr;
  var imageParams:ImageParameters=new ImageParameters();
  var responder:IResponder;
  var mapImage:MapImage=new MapImage();
  var downloadURL:URLRequest;
  //var fileName:String = layer.name + ".png";
  imageParams.layerOption='show';
  imageParams.format=='jpg';

  //imageParams.layerIds=[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14];
  Alert.show(layer.visibleLayers.toArray()+'\n\n'+layer.layerDefinitions);
  imageParams.layerIds=layer.visibleLayers.toArray();
  imageParams.layerDefinitions=layer.layerDefinitions;
  imageParams.width=350;
  imageParams.height=400;
  imageParams.transparent=false;
  //imageParams.extent=map.extent;
 
  layer.exportMapImage(imageParams,new AsyncResponder(onResult,onFault));
 
  function onResult(mi:MapImage, token:Object = null):void
  {
   mi.extent=map.extent;
   mi.scale=40;
   mapImage = mi;
   downloadURL = new URLRequest();
   downloadURL.url = mapImage.href;
   //Alert.show('Image Href: '+mapImage.href+'');
   //var request:URLRequest = new URLRequest(downloadURL);
   //var request:URLRequest = new URLRequest(  mapImage.href);
   var urlLoader:URLLoader =new URLLoader();
   var loadedFile:ByteArray;
   urlLoader.addEventListener(Event.COMPLETE, onURLLoaderComplete);
   urlLoader.addEventListener(Event.CANCEL,onURLLoaderCancel);
   urlLoader.dataFormat=URLLoaderDataFormat.BINARY;
   urlLoader.load(downloadURL);
  
   function onURLLoaderComplete(event:Event):void
   {
    loadedFile = event.target.data;
    pdfDoc=PrintMap.run(loadedFile);
    if ( pdfDoc )  // save to file
    {
     //Alert.show("Saving File","Alert");
     try{
      pdfDoc.HPDF_SaveToStream(); 
      var memAttr : HPDF_MemStreamAttr = pdfDoc.stream.attr as HPDF_MemStreamAttr;
      memAttr.buf.position = 0;
      Alert.show("AAA, JPG is created would you like to download it now?",
       "File Creation Complete",Alert.YES | Alert.NO,
       null,AlertHandler1,null,Alert.YES);
      function AlertHandler1(evt:CloseEvent):void{
       fileReference.save( memAttr.buf, "Map.pdf" );
      }
     }catch(e:Error){
      Alert.show('Error at PDF Saving.\n'+e.message);
     }
    }else{
     Alert.show("PDF Creation error.","Alert");
    }
   }
   function onURLLoaderCancel(event:Event):void
   {
    Alert.show('Error at URL Loader');
   }
   //fileReference.save(mapImage,fileName);
  }
  function onFault(info:Object, token:Object = null):void
  {
   Alert.show('Map could not be exported.\n'+info.toString(), "Export Problem");
  }

}catch(e:Error){
  Alert.show('PDF Creation Error: '+e.message,'Error');
}
}


/**************************************/
  Second Method...for
pdfDoc=PrintMap.run(loadedFile);
/**************************************/

public static function run(map:ByteArray) : HPDF_Doc
  {
   const pageTitle : String = "MMGSY Map";
   const sampText : String = "abcdefgABCDEFG123!#$%&+-@?";
   const sampText2 : String = "The quick brown fox jumps over the lazy dog.";
  
   var pdfDoc    : HPDF_Doc ;
   var page      : HPDF_Page ;
   var defFont   : HPDF_Font ;
   var PAGE_HEIGHT  : Number = 650;
   var PAGE_WIDTH  : Number = 550;
   var y    : int = 50;
   var tw : Number ;
   var fsize : Number ;
   var i : Number ;
   var len : Number ;
  
  
   pdfDoc = new HPDF_Doc( ) ;
  
   try{
    /* Add a new page object. */
    page = pdfDoc.HPDF_AddPage();
   
    defFont = pdfDoc.HPDF_GetFont ( "Helvetica-Bold", null);
    page.HPDF_Page_SetFontAndSize ( defFont, 10);  
   
    page.HPDF_Page_SetHeight (PAGE_HEIGHT);
    page.HPDF_Page_SetWidth (PAGE_WIDTH);
   
    gridSheet.printGrid  (pdfDoc, page);
   
    page.HPDF_Page_SetFontAndSize (defFont, 24);
    tw = page.HPDF_Page_TextWidth ( pageTitle);
    page.HPDF_Page_BeginText ();
    page.HPDF_Page_TextOut ( (page.HPDF_Page_GetWidth() - tw) / 2,
     page.HPDF_Page_GetHeight () - 30, pageTitle);
    page.HPDF_Page_EndText ();
   
    //var img  : HPDF_Image=pdfDoc.HPDF_LoadJpegImageFromFile( map );
    var img  : HPDF_Image=pdfDoc.HPDF_LoadPngImageFromByteArray(map);
    //Alert.show('Image Width: '+img.width+', Image Height: '+img.height);
    //page.HPDF_Page_DrawImage(img,(page.HPDF_Page_GetWidth()-img.width/4)/2, (page.HPDF_Page_GetHeight()-img.height/4-50),img.width/4 ,img.height/4);
    //page.HPDF_Page_DrawImage(img,20, 410,500 ,200);
    page.HPDF_Page_DrawImage(img,20, 200,img.width ,img.height);
   
   }catch(e:Error){
    Alert.show('Error at PDF generation.'+e);
   }
   return pdfDoc;
  
  }
Tags (2)
0 Kudos
1 Reply
TomSchuller
Frequent Contributor
Hy,
this may be an alternative:
http://www.arcgis.com/home/item.html?id=6809086326ea4c76bf026a32bb9dd698

Make prints of maps to pdf+jpg where you can add a legend.

Schuller Tom
0 Kudos