PublishMap.vb
' Copyright 2012 ESRI ' ' All rights reserved under the copyright laws of the United States ' and applicable international laws, treaties, and conventions. ' ' You may freely redistribute and use this sample code, with or ' without modification, provided you include the original copyright ' notice and use restrictions. ' ' See the use restrictions. ' Imports System Imports System.Collections.Generic Imports System.Text Imports System.IO Imports System.Windows.Forms Imports ESRI.ArcGIS.ArcMapUI Imports ESRI.ArcGIS.esriSystem Imports ESRI.ArcGIS.Framework Imports ESRI.ArcGIS.Publisher Imports ESRI.ArcGIS.PublisherUI Imports ESRI.ArcGIS.Carto Public Class PublishMap Inherits ESRI.ArcGIS.Desktop.AddIns.Button Public Sub New() End Sub Protected Overrides Sub OnClick() 'Enable publisher extension If (EnablePublisherExtension()) Then System.Windows.Forms.Cursor.Current = Cursors.WaitCursor Dim mapDoc As IMxDocument = My.ArcMap.Document Dim publishMaps As IPMFPublish3 = New PublisherEngineClass() 'Accept the default settings when the map is published Dim settings As IPropertySet = publishMaps.GetDefaultPublisherSettings() Dim orderedMaps As IArray = New ArrayClass() 'Loop over all the maps in the map document and each one to an Array object For i As Integer = 0 To mapDoc.Maps.Count - 1 orderedMaps.Add(mapDoc.Maps.Item(i)) Next Try 'Create the PMF file using the current settings and the map order specified in the IArray parameter 'It will be written to C:\\PublishedMap.pmf and the data will be referenced using relative paths. publishMaps.PublishWithOrder(orderedMaps, mapDoc.PageLayout, mapDoc.ActiveView, settings, _ True, "C:\\PublishedMap.pmf") 'Report outcome to the user Dim mapdocTitle As String = DirectCast(My.ArcMap.Document, ESRI.ArcGIS.Framework.IDocument).Title Dim msg As String = String.Empty If (orderedMaps.Count = 1) Then msg = "The map in " + mapdocTitle + " has been published successfully" Else msg = "The maps in " + mapdocTitle + " have been published successfully" End If MessageBox.Show(msg) Catch ex As Exception MessageBox.Show("Error Publishing Map: " + ex.Message, "Error") End Try System.Windows.Forms.Cursor.Current = Cursors.Default End If My.ArcMap.Application.CurrentTool = Nothing End Sub Protected Overrides Sub OnUpdate() Enabled = My.ArcMap.Application IsNot Nothing End Sub Private Function EnablePublisherExtension() As Boolean Dim checkedOutOK As Boolean = False Try Dim extMgr As IExtensionManager = New ExtensionManagerClass() Dim extAdmin As IExtensionManagerAdmin = DirectCast(extMgr, IExtensionManagerAdmin) Dim ud As UID = New UID() ud.Value = "esriPublisherUI.Publisher" Dim obj As Object = 0 extAdmin.AddExtension(ud, obj) Dim extConfig As ESRI.ArcGIS.esriSystem.IExtensionConfig = DirectCast(extMgr.FindExtension(ud), ESRI.ArcGIS.esriSystem.IExtensionConfig) If Not (extConfig.State = ESRI.ArcGIS.esriSystem.esriExtensionState.esriESUnavailable) Then 'This checks on the extension extConfig.State = ESRI.ArcGIS.esriSystem.esriExtensionState.esriESEnabled checkedOutOK = True End If Catch ex As Exception MessageBox.Show("Publisher extension has failed to check out.", "Error") End Try Return checkedOutOK End Function End Class