PrintActiveViewArcPressVB_Net_Addin.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. ' ' Copyright 2011 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 at <your ArcGIS install location>/DeveloperKit10.1/userestrictions.txt. ' Imports System.Runtime.InteropServices Imports System.Drawing Imports ESRI.ArcGIS.Carto Imports ESRI.ArcGIS.Output Imports ESRI.ArcGIS.Geometry Imports ESRI.ArcGIS.Display Imports ESRI.ArcGIS.OutputExtensions Imports ESRI.ArcGIS.esriSystem Imports System.Windows.Forms Public Class PrintActiveViewArcPressVB_Net_Addin Inherits ESRI.ArcGIS.Desktop.AddIns.Button Public Sub New() End Sub Protected Overrides Sub OnClick() 'calls the PrintActiveViewVBParameterized function with an argument. PrintActiveViewVBParameterized(3) End Sub Protected Overrides Sub OnUpdate() Enabled = My.ArcMap.Application IsNot Nothing End Sub Private Sub PrintActiveViewVBParameterized(ByVal iResampleRatio As Integer) 'Prints the active view of the document to the default printer using the 'ArcPress Printer Engine. If the printer is not supported by the ArcPress 'printer engine's "auto-select" driver selection method, the function exits and 'no print is made. Dim docActiveView As IActiveView = My.ArcMap.Document.ActiveView Dim docPrinter As IPrinter Dim PrintAndExport As IPrintAndExport = New PrintAndExport Dim docArcPressPrinter As IArcPressPrinter Dim sNameRoot As String Dim iNumPages As Short docArcPressPrinter = New ArcPressPrinter() docPrinter = New ArcPressPrinter() Try 'Attempt to auto-select a driver based on the printer's name. If no driver can be 'auto-selected, exit the function and show a message about the failure. docArcPressPrinter.AutoSelectDriverByName(My.ArcMap.ThisApplication.Paper.PrinterName) If docArcPressPrinter.SelectedDriverId Is Nothing Then MessageBox.Show("Cannot auto-select ArcPress Driver for " & My.ArcMap.ThisApplication.Paper.PrinterName & ".", "ArcPress Driver Auto-select Error") Exit Sub End If 'Pass the newly created ArcPressPrinter to docPrinter. docPrinter = docArcPressPrinter sNameRoot = "PrintActiveViewArcPressSample" 'using the current printer. docPrinter.Paper = My.ArcMap.ThisApplication.Paper 'make sure the paper orientation is set to the orientation matching the current view. docPrinter.Paper.Orientation = My.ArcMap.Document.PageLayout.Page.Orientation 'set the spool filename (this is the job name that shows up in the print queue) docPrinter.SpoolFileName = sNameRoot ' Find out how many printer pages the output will cover. iNumPages will always be 1 ' unless the user explicitly sets the tiling options in the file->Print dialog. If TypeOf My.ArcMap.Document.ActiveView Is IPageLayout Then My.ArcMap.Document.PageLayout.Page.PrinterPageCount(docPrinter, 0, iNumPages) Else 'always set the number of pages to 1 for a data view. iNumPages = 1 End If Dim lCurrentPageNum As Short For lCurrentPageNum = 1 To iNumPages Step lCurrentPageNum + 1 Try PrintAndExport.Print(docActiveView, docPrinter, My.ArcMap.Document.PageLayout.Page, lCurrentPageNum, iResampleRatio, Nothing) Catch ex As Exception MessageBox.Show("Printing cancelled for page " + lCurrentPageNum) End Try Next Catch ex As Exception MessageBox.Show(My.ArcMap.ThisApplication.Paper.PrinterName & " is not a supported printer.", "ArcPress Driver Auto-select Error") End Try End Sub End Class